2
我試圖重新排序使用XSLT 1.0的XML元素。以下是XML的小片段XML元素重排序不工作XSLT
<RIMSDB1 xmlns="http://kiris.nps21.org/xsd">
<ROW>
<ReportID>1</ReportID>
<WKYMD>20160610</WKYMD>
<RunSystemDate>20160610032048</RunSystemDate>
</ROW>
<ROW>
<ReportID>2</ReportID>
<WKYMD>27869</WKYMD>
<RunSystemDate>495876043985778649</RunSystemDate>
</ROW>
這是我用來轉換它的XSLT。
<xsl:template match="*/ROW">
<xsl:copy>
<xsl:apply-templates select="@*" />
<xsl:apply-templates select="WKYMD" />
<xsl:apply-templates select="RunSystemDate" />
<xsl:apply-templates select="ReportID" />
</xsl:copy>
的問題是,當我改變我會按順序沒有任何變化,但我從
<RIMSDB1 xmlns="http://kiris.nps21.org/xsd">
刪除的xmlns =「http://kiris.nps21.org/xsd」我得到正確的轉型,這是:
<RIMSDB1>
<ROW>
<WKYMD>20160610</WKYMD>
<RunSystemDate>20160610032048</RunSystemDate>
<ReportID>1</ReportID>
</ROW>
<ROW>
<WKYMD>27869</WKYMD>
<RunSystemDate>495876043985778649</RunSystemDate>
<ReportID>2</ReportID>
</ROW>
任何人都可以闡明如果有更好的重新排序方式正在發生的事情。
在此先感謝。
@ MADS-這爲我工作,但我遇到了一些其他的問題。如何在兩家母公司和子標籤的命名空間處理這個問題,例如 ' \t \t \t \t \t \t \t \t \t \t \t \t 20160610032048 \t \t
\t \t \t \t \t \t \t \t \t \t \t 495876043985778649 \t \t
\t ' –
在該示例中,元素機智h xmlns =「」被放入「no namespace」中,現在它和它的後代不在文檔元素中聲明的名稱空間中。對於那些在「no namespace」中的用戶,在選擇/匹配表達式中不要使用名稱空間前綴。 –
如果您的輸入不是標準的,而且您不確定元素將被綁定到什麼時候/哪個名稱空間,則可以使用更通用的匹配表達式,該表達式只關心local-name()而不關心名稱空間 - URI()。例如* [local-name()='WKYMD'] –