에 의해 노드를 얻고 난이 소스 XML이다 XMLXSLT 내가 XSLT에서 초보자입니다 색인
에 XML을 변환하는 데 사용하고
소스 XML :
<Response>
<Pax>
<Id>1</Id>
</Pax>
<Pax>
<Id>2</Id>
</Pax>
<Travelers>
<Traveler>
<Name>ABC</Name>
</Traveler>
<Traveler>
<Name>XYZ</Name>
</Traveler>
</Travelers>
</Response>
XSLT 아래에 작성했습니다.
XSLT :
(210)<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:output method="xml" indent="yes" />
<xsl:template match="Response">
<xsl:element name="Root">
<xsl:apply-templates select="Travelers/Traveler"/>
</xsl:element>
</xsl:template>
<xsl:template match="Traveler">
<xsl:element name="Person">
<xsl:element name="PId">
<xsl:value-of select="//Pax/Id[position()]" />
</xsl:element>
<xsl:element name="Name">
<xsl:value-of select="Name" />
</xsl:element>
</xsl:element>
</xsl:template>
</xsl:stylesheet>
출력 :
<Root>
<Person>
<PId>1</PId>
<Name>ABC</Name>
</Person>
<Person>
<PId>1</PId>
<Name>XYZ</Name>
</Person>
</Root>
내가 XML 출력 이하로 생성하고자하는
예상 출력 :
<Root>
<Person>
<PId>1</PId>
<Name>ABC</Name>
</Person>
<Person>
<PId>2</PId>
<Name>XYZ</Name>
</Person>
</Root>
유일한 문제는 위의 XML에 나타낸 바와 같이 PId
인 경우 값이여야합니다..
도와주세요. 감사.
수정하십시오. 보통 이러한 속성을 가진 경우'current()', 즉'Pax/Id [@ id = current()/@ id]'를 사용하여이 문제를 회피 할 수 있습니다. 그러나'position()'과'current()'를 조합 할 수없고 변수를 사용해야합니다. –
@NilsWerner - 정확합니다. – ABach
@ 표지 - 감사합니다. 이미 지정된 XPath는 틀린가? –