3

ノード自体ではなく、ノードのコンテンツのみをコピーしたいので、xsl:copy-of に少し問題があります。

XML では:

<parent>    
    <node>Hello, I'm a <b>node</b>!!!</node>
</parent>

XSL では:

<xsl:template match="parent">
    <tr>
        <td><xsl:copy-of select="node"/></td>
    </tr>
</xsl:template>

結果:

<tr>
    <td><node>Hello, I'm a <b>node</b>!!!</node></td>
</tr>

期待される結果:

<tr>
    <td>Hello, I'm a <b>node</b>!!!</td>
</tr>

問題は、 を使用すると!!!xsl:value-ofが失われることです。<b></b>

4

1 に答える 1

6

あなたが使用することができます

<xsl:copy-of select="node/node()" />

要素名も同じであるため、少し奇妙に見えますnodeが、node()セレクターが行うことは、適切なノード内からすべての子要素、テキスト ノード、コメント ノード、および処理命令を選択することです (この場合node、現在のコンテキストで呼び出されるすべての子要素エレメント)。

node()属性を選択しないため、最初から

<parent>    
    <node attr="foo">Hello, I'm a <b>node</b>!!!</node>
</parent>

その後、<td><xsl:copy-of select="node/node()"/></td>生産します

<td>Hello, I'm a <b>node</b>!!!</td>

代わりにあなたが言っ<td><xsl:copy-of select="node/node() | node/@*"/></td>たなら、あなたは得るだろう

<td attr="foo">Hello, I'm a <b>node</b>!!!</td>
于 2012-11-13T14:23:32.290 に答える