如何展示&在XML属性中由XSLT生成

时间:2011-10-26 01:26:19

标签: xml xslt

首先,我要指定我的目标。我的任务是将一个url连接到一个常量字符串,特别是'& src = JB-10081'作为输出中xml标记的属性。

这是我的代码:

    <vacancy>
        <xsl:attribute name = "url">
          <xsl:value-of disable-output-escaping="yes" select="concat(apply_url, '&amp;src=JB-10081')"/>
        </xsl:attribute>
    <vacancy>

这段代码给了我一个结果:

 <vacancy id="6747232000011108" datestart="" dateend="" language="" origin="" url="https://dtt.taleo.net/careersection/10540/jobapply.ftl?lang=en-GB&amp;job=27050&amp;src=JB-10081">

您可能会注意到URL和字符串文字正确显示,但字符串文字显示的输出未更改为&amp; ,而是显示为&amp; amp; < / strong>有人可以帮我显示为&amp;而不是&amp; amp;

2 个答案:

答案 0 :(得分:2)

您可以使用D-O-E仅将非转义内容生成为文本节点的一部分 - 而不是属性

http://w3.org/TR/1999/REC-xslt-19991116#disable-output-escaping

  

对于文本节点禁用输出转义是错误的   用于结果树中除文本节点之外的其他内容。   因此,禁用xsl:value-of或的输出转义是错误的   xsl:用于生成a的字符串值的文本元素   注释,处理指令或属性节点; “

答案 1 :(得分:0)

我已经填写了上面的答案。 XML有一些保留字符,包括'&amp;' 。 XML使用它来创建实体引用。因此

<a b="&foo;"/>

指示XML解析器查找名为“foo”的实体。如果您不使用&...;构造,则会出现错误。尝试阅读

<a b="&src"/>

进入任何XML解析器,它应该抛出一个错误。因此,您希望创建的输出是非法的XML。

如果您希望创建非XML字符串,则必须以文本形式输出。