1

我有一个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 转换的结果与 < >

有谁知道它有什么问题,在这方面的任何帮助都会非常受欢迎。

谢谢问候阿泽姆

4

3 回答 3

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>
于 2008-12-30T05:54:29.117 回答
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>

这假设您已经有一个身份模板

于 2009-03-11T18:27:50.127 回答
-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 & gt 进行转义

谢谢问候阿泽姆

于 2008-12-30T06:58:44.477 回答