2014-09-08 2 views
0

나는이 같은 문서를 변환해야합니다 이것으로XSLT : 트리를 뒤집는 방법?

<root> 
    <products> 
    <ProductInfo> 
     <ProductID>0</ProductID> 
     <ProductName>Hello world!</ProductName> 
    </ProductInfo> 
    <M> 
     <ModelInfo> 
     <ModelID>0</ModelID> 
     <ModelName>Hello world!</ModelName> 
     </ModelInfo> 
    </M> 
    </products> 
</root> 

:

<root> 
    <products> 
    <M> 
     <ModelInfo> 
     <ModelName>Hello world!</ModelName> 
     <ModelID>0</ModelID> 
     </ModelInfo> 
    </M> 
    <ProductInfo> 
     <ProductName>Hello world!</ProductName> 
     <ProductID>0</ProductID> 
    </ProductInfo> 
    </products> 
</root> 

그래서 출력의 모든 태그 역순에 있어야합니다.

테스트를 위해이 코드가 필요합니다. 일부 외부 응용 프로그램이 임의의 순서로 태그를 허용하는지 확인해야합니다. 내 XML 스키마가 임의의 순서로 태그를 허용하는지 테스트해야합니다.

답변

2

하지 나무를 반대하지만, (모든 수준에서) 형제 지점의 순서를 반대로 :

XSLT 1.0

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

<xsl:template match="@*|node()"> 
    <xsl:copy> 
     <xsl:apply-templates select="@*"/> 
     <xsl:apply-templates select="node()"> 
      <xsl:sort select="position()" data-type="number" order="descending"/> 
     </xsl:apply-templates> 
    </xsl:copy> 
</xsl:template> 

</xsl:stylesheet>