我有一个xml,其中我已经在这样的评论下存储了一些html
<root>
<node>
<!--
<a href="mailto:some@one.com"> Mail me </a>
-->
</node>
</root>
现在在我的Transform Xslt代码中,我给XPathNavigator指向节点,在xslt中我将注释值作为参数传递。
假设$ href为<a href="mailto:some@one.com"> Mail me </a>
在xslt我正在做<xsl:value-of select="$href" disable-output-escaping="yes">
但是$ href仍然被转义,xslt转换的结果出现了&lt; &GT;
有没有人知道它的错误在这方面的任何帮助都会得到很高的评价。
由于 问候 Azeem
答案 0 :(得分:2)
当节点的一部分失去其特殊含义时 - 因此“href”不是一个节点,所以你不能用它来选择东西。
您可以选择以下评论:
<xsl:template match="/">
<xsl:value-of select="/root/node/comment()" disable-output-escaping="yes"/>
</xsl:template>
这将根据您的XML输入生成:
cristi:tmp diciu$ xsltproc test.xsl test.xml
<?xml version="1.0"?>
<a href="mailto:some@one.com"> Mail me </a>
答案 1 :(得分:1)
正如diciu所提到的,曾经评论过里面的文本不再是XML解析的。
这个问题的一个解决方案是使用两遍方法。一次通过取出注释的<a href=""></a>
节点并将其放入普通XML,第二次通过以使用所需的输出丰富数据:<a href="">Your Text Here</a>
。
第二种单通方法是通过正则表达式(或者在我们的情况下只是从XML中提取)从注释中提取所需的文本(在本例中为电子邮件地址),然后创建标记需要它周围。
<xsl:template match="ahrefmail/comment()">
<xsl:element name="a">
<xsl:attribute name="href" select="../../mail"/>
<xsl:attribute name="class" select="'text'"/>
<xsl:text>Mail Me!</xsl:text>
</xsl:element>
</xsl:template>
这假设您已经有identity template
答案 2 :(得分:-1)
我确实尝试了你刚刚说的没用的xml我正在使用的是
<?xml version="1.0" ?>
<root>
<institution id="1">
<data>
<ahrefmail>
<!--
<a href='mailto:ibank@abibbankuk.com' class='text'></a>
-->
</ahrefmail>
<mail>
ibank@abibbankuk.com
</mail>
</data>
</institution>
<institution id="2">
<data>
<ahrefmail>
<!--
<a href='mailto:ibank@abibbankuk2.com' class='text'></a>
-->
</ahrefmail>
<mail>
ibank@abibbankuk2.com
</mail>
</data>
</institution>
</root>
在xslt我正在做
其中$ id作为参数== 1传递 ahrefmail节点仍然使用lt&amp; amp;进行转义GT
由于 问候 Azeem