1

このようなコメントの下にいくつかのhtmlを保存したxmlがあります

 <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解析されなくなります。

この問題の1つの解決策は、2パスアプローチを使用することです。コメントされたノードを取り出して<a href=""></a>通常のXMLに配置するための1つのパスと、目的の出力でデータを強化するための2番目のパス:<a href="">Your Text Here</a>

2番目のシングルパスアプローチは、コメント(この場合は電子メールアドレス)から正規表現(またはこの場合は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>

これは、 IDテンプレートがすでに配置されていることを前提としています

于 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 に答える