首先,我要指定我的目标。我的任务是将一个url连接到一个常量字符串,特别是'& src = JB-10081'作为输出中xml标记的属性。
这是我的代码:
<vacancy>
<xsl:attribute name = "url">
<xsl:value-of disable-output-escaping="yes" select="concat(apply_url, '&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&job=27050&src=JB-10081">
您可能会注意到URL和字符串文字正确显示,但字符串文字显示的输出未更改为&amp; ,而是显示为&amp; amp; < / strong>有人可以帮我显示为&amp;而不是&amp; amp;
答案 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字符串,则必须以文本形式输出。