2017-11-03 13 views
0

特定のノードの内容を文字列からXMLに変換し、このノードを結果のXMLに置き換える必要があります。このノードは配列にすることができます。XSLT 1.0 - 各ノードの文字列からXMLへ

<?xml version="1.0" encoding="UTF-8"?> 
    <NodeA><NodeB>&lt;tagA xmlns="http://www.aaa.com"&gt;&lt;tagB&gt;valor1&lt;/tagB&gt;&lt;/tagA&gt;</NodeB><NodeB>&lt;tagA xmlns="http://www.aaa.com"&gt;&lt;tagB&gt;valor2&lt;/tagB&gt;&lt;/tagA&gt;</NodeB></NodeA> 

を私はXSLTの下に使用しています:

私は例として以下このXMLのような何かをしました...だから私は、おそらくのために、各命令を使用する必要がありますが、私は方法がわかりません

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:output method="xml" version="1.0" encoding="UTF-8"/> 
<xsl:template match="@* | node()"> 
    <xsl:copy> 
     <xsl:apply-templates select="@* | node()"/> 
    </xsl:copy> 
</xsl:template> 
<xsl:template match="//NodeB"> 
    <xsl:value-of select="/" disable-output-escaping="yes"/> 
</xsl:template> 

結果は文字列がXMLに変換されていることを、ノードBが交換されているが、それは以下のように、複製されつつある。

<?xml version="1.0" encoding="UTF-8"?> 
<NodeA> 
<tagA xmlns="http://www.aaa.com"> 
    <tagB>valor1</tagB> 
</tagA> 
<tagA xmlns="http://www.aaa.com"> 
    <tagB>valor2</tagB> 
</tagA> 
<tagA xmlns="http://www.aaa.com"> 
    <tagB>valor1</tagB> 
</tagA> 
<tagA xmlns="http://www.aaa.com"> 
    <tagB>valor2</tagB> 
</tagA> 
</NodeA> 

私は次のような結果が必要です。私は、例えば、配列内の3つのノードを持っていた場合

<?xml version="1.0" encoding="UTF-8"?> 
<NodeA> 
<tagA xmlns="http://www.aaa.com"> 
    <tagB>valor1</tagB> 
</tagA> 
<tagA xmlns="http://www.aaa.com"> 
    <tagB>valor2</tagB> 
</tagA> 
</NodeA> 

を、結果は三重されるだろう。

答えて

1

私は思うの代わり

<xsl:template match="//NodeB"> 
    <xsl:value-of select="/" disable-output-escaping="yes"/> 
</xsl:template> 

あなたは

<xsl:template match="NodeB"> 
    <xsl:value-of select="." disable-output-escaping="yes"/> 
</xsl:template> 
+0

こんにちはマーティンをしたいです。どうもありがとうございました。出来た。 – Flavio

関連する問題