使用XSLT執行3級別的XML文檔排序後。我無法制作我的排序XML的副本。我原來的XML是:如何使用XSLT複製XML以生成另一種相同形式的新XML
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Root>
<Test>
<TestPhase>5</TestPhase>
<TestFlow>9</TestFlow>
<TestParameter>5</TestParameter>
</Test>
<Test>
<TestPhase>5</TestPhase>
<TestFlow>9</TestFlow>
<TestParameter>2</TestParameter>
</Test>
<Test>
<TestPhase>1</TestPhase>
<TestFlow>3</TestFlow>
<TestParameter>1</TestParameter>
</Test>
<Test>
<TestPhase>1</TestPhase>
<TestFlow>2</TestFlow>
<TestParameter>2</TestParameter>
</Test>
<Test>
<TestPhase>2</TestPhase>
<TestFlow>4</TestFlow>
<TestParameter>6</TestParameter>
</Test>
<Test>
<TestPhase>2</TestPhase>
<TestFlow>4</TestFlow>
<TestParameter>1</TestParameter>
</Test>
<Test>
<TestPhase>2</TestPhase>
<TestFlow>2</TestFlow>
<TestParameter>10</TestParameter>
</Test>
<Test>
<TestPhase>2</TestPhase>
<TestFlow>2</TestFlow>
<TestParameter>1</TestParameter>
</Test>
.
.
.
.
.
</Root>
3級排序後,我做了一個副本。但新的XML(test.xml)似乎如下:
<Test><TestPhase>3</TestPhase><TestFlow>2</TestFlow><TestParameter>1</TestParameter></Test><Test><TestPhase>3</TestPhase><TestFlow>2</TestFlow><TestParameter>2</TestParameter></Test><Test><TestPhase>4</TestPhase><TestFlow>1</TestFlow><TestParameter>1</TestParameter></Test><Test><TestPhase>4</TestPhase><TestFlow>1</TestFlow><TestParameter>2</TestParameter></Test><Test><TestPhase>4</TestPhase><TestFlow>2</TestFlow><TestParameter>1</TestParameter></Test><Test><TestPhase>4</TestPhase><TestFlow>2</TestFlow><TestParameter>2</TestParameter></Test><Test><TestPhase>5</TestPhase><TestFlow>1</TestFlow><TestParameter>1</TestParameter></Test><Test><TestPhase>5</TestPhase><TestFlow>1</TestFlow><TestParameter>2</TestParameter></Test><Test><TestPhase>5</TestPhase><TestFlow>2</TestFlow><TestParameter>1</TestParameter></Test><Test><TestPhase>5</TestPhase><TestFlow>2</TestFlow><TestParameter>2</TestParameter></Test><Test><TestPhase>6</TestPhase><TestFlow>1</TestFlow><TestParameter>1</TestParameter></Test><Test><TestPhase>6</TestPhase><TestFlow>1</TestFlow><TestParameter>2</TestParameter></Test><Test><TestPhase>6</TestPhase><TestFlow>2</TestFlow><TestParameter>1</TestParameter></Test><Test><TestPhase>6</TestPhase><TestFlow>2</TestFlow><TestParameter>2</TestParameter></Test><Test><TestPhase>7</TestPhase><TestFlow>1</TestFlow><TestParameter>1</TestParameter></Test><Test><TestPhase>7</TestPhase><TestFlow>1</TestFlow><TestParameter>2</TestParameter></Test><Test><TestPhase>7</TestPhase><TestFlow>2</TestFlow><TestParameter>1</TestParameter></Test><Test>< .
.
.
.
.
請在此建議我。我是XPath/XSLT的新手。我的XSLT寫成如下:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="Root">
<xsl:apply-templates>
<xsl:sort select="TestPhase" data-type="number" order="ascending"/>
<xsl:sort select="TestFlow" data-type="number" order="ascending"/>
<xsl:sort select="TestParameter" data-type="number" order="ascending"/>
</xsl:apply-templates>
</xsl:template>
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
我還檢查我的代碼,只是複製原始XML的方法,沒有對它進行排序。發生同樣的問題。我嘗試用下面的XSLT:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
字:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
雖然我使用
<xsl:output method="xml" indent="yes"/>
它是所有
沒有在第一行出現崩潰了athough我選擇:
indent="yes"
請幫忙。非常感激你的幫助。
謝謝。
Cheers :)
您是如何實際執行XSLT轉換的?你在使用什麼XSLT處理器?請注意,縮進(或缺少)實際上並不是由XSLT過程本身完成的,而是通過將結果序列化爲字符串。 –