2017-11-03 5 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> 
</NodeA> 

는, 예를 들어, 배열에있는 3 개 노드, 결과는 triplicated 될 것이다 :

<?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> 

나는 다음과 같은 결과가 필요합니다.

답변

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