2

重複の可能性:
コメント内の出力要素

この方法で xsl 変換中にノードにコメントを付けようとしています

Doesn't work:
<xsl:comment><xsl:copy-of select="."/></xsl:comment>

しかし、私が得るのは空のコメントですが、コメント要素を削除すると正しいノードが得られます

This is correct:
<xsl:copy-of select="."/>

copy-of 要素がコメント内で機能しないのはなぜですか? 解決策はありますか、それとも何か間違っていますか?

4

3 に答える 3

0

イアンに同意しました。これは重複しています。

いずれにせよ、あなたがおそらく欲しいのは...

<xsl:comment><xsl:value-of select="."/></xsl:comment>

理由?コメントに子ノードを含めることはできません。これらは、テキストプロパティ(コメントコンテンツ)を持つアトミックノードタイプです。

于 2012-10-03T08:16:03.943 に答える
0

DOEではxsl:comment使用できませんでした。xsl:text

XML入力

<doc>
    <foo>
        <bar attr="test"/>
    </foo>
</doc>

XSLT 1.0

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output indent="yes"/>
    <xsl:strip-space elements="*"/>

    <xsl:template match="doc">
        <xsl:copy>
            <xsl:text disable-output-escaping="yes">&lt;!--</xsl:text>
            <xsl:copy-of select="foo"/>
            <xsl:text disable-output-escaping="yes">--></xsl:text>
        </xsl:copy>
    </xsl:template>

</xsl:stylesheet>

XML出力

<doc><!--<foo>
      <bar attr="test"/>
   </foo>--></doc>
于 2012-10-03T15:17:59.463 に答える
0

コメント内の要素のテキスト表現を生成する簡単な方法はありません。

これは、インライン拡張関数を使用した短いものです (C#):

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
     xmlns:msxsl="urn:schemas-microsoft-com:xslt"
     xmlns:my="my:my" exclude-result-prefixes="msxsl my">
     <xsl:output omit-xml-declaration="yes" indent="yes"/>

     <xsl:template match="/*">
      <xsl:comment>
        <xsl:value-of select="my:stringize(someElement)"/>
      </xsl:comment>
     </xsl:template>

     <msxsl:script language="c#" implements-prefix="my">
      public string stringize(XPathNavigator doc)
      {
       return doc.OuterXml;
      }
     </msxsl:script>
</xsl:stylesheet>

この変換が (.NET XslCompiledTransform XSLT プロセッサを使用して) 次の XML ドキュメントに適用される場合:

<t>
 <someElement>someValue</someElement>
</t>

必要な正しい結果が生成されます。

<!--<someElement>someValue</someElement>-->

純粋な XSLT で同じことを行うには、さまざまな方法があります。たとえば、XPath ビジュアライザーの XSLT コードを参照して、XML 文書を Html (12 年前に書いたオープン ソース製品であり、私はそうではありません) として見栄えよく表現しています。ここで何らかの方法で宣伝する)

于 2012-10-03T12:12:15.703 に答える