【问题标题】:disable-output-escaping not working禁用输出转义不起作用
【发布时间】:2013-07-18 16:44:33
【问题描述】:

我有一些 XML

<p>Lorem ipsum dolor sit amet,<unclear reason="illegible"/> elit, sed do eiusmod
tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, 
quis nostrud exercitation ullamco laboris <unclear reason="illegible"/> ex ea 
commodo consequat. Duis aute irure dolor in reprehenderit in 
voluptate velit esse cillum dolore eu fugiat nulla pariatur. 
<unclear reason="illegible"/> non proident, sunt in culpa qui 
officia deserunt mollit anim id est laborum</p>

当我尝试运行时

<xsl:value-of select="/p" disable-output-escaping="yes"/> 

它不返回 xml 标签。如何在 value-of 查询中包含标签?

我希望它包含整个文本,以识别文本中不明确的标签。

【问题讨论】:

    标签: xslt xslt-1.0


    【解决方案1】:

    没错,根据定义,value-of 元素是其所有后代文本节点的串联。您不能“在值查询中包含标签”,但可以使用 copy-of 而不是 value-of 将整个 p 元素复制到输出,包括其子元素(文本节点和元素)

    <xsl:copy-of select="/p" />
    

    或者如果你想要 p 元素的内容,而不是周围的 &lt;p&gt;&lt;/p&gt; 标签(例如,如果你将内容插入到另一个元素中)然后

    <xsl:copy-of select="/p/node()" />
    

    如果您想将 unclear 元素转换为其他内容而不是按原样包含它们,那么您可能希望改用基于 身份模板 的转换

    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
    
      <!-- copy everything from input to output verbatim, except where
           a more specific template applies -->
      <xsl:template match="@*|node()">
        <xsl:copy><xsl:apply-templates select="@*|node()" /></xsl:copy>
      </xsl:template>
    
      <!-- handle unclear elements differently -->
      <xsl:template match="unclear">
        <xsl:text>__UNCLEAR__</xsl:text>
      </xsl:template>
    </xsl:stylesheet>
    

    鉴于您的示例输入,这将产生

    <p>Lorem ipsum dolor sit amet,__UNCLEAR__ elit, sed do eiusmod
    tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, 
    quis nostrud exercitation ullamco laboris __UNCLEAR__ ex ea 
    commodo consequat. Duis aute irure dolor in reprehenderit in 
    voluptate velit esse cillum dolore eu fugiat nulla pariatur. 
    __UNCLEAR__ non proident, sunt in culpa qui 
    officia deserunt mollit anim id est laborum</p>
    

    【讨论】:

    • 有没有办法可以更改不明确的标签以包含在输出中?我运行了副本,它只返回 xml 标签。我希望它包含整个文本,以识别文本中不清楚的标签。
    • @user2075215 “包含在输出中”是什么意思?如果您使用 copy-of 而不是 value-of 它应该可以满足您的需求。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-23
    相关资源
    最近更新 更多