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 RunSystemDate> \t \t
\t \t \t \t \t \t \t \t \t \t \t 495876043985778649 RunSystemDate> \t \t
\t EDDP_CSI_ADJPORTINVEST_HSTY> ' –
在该示例中,元素机智h xmlns =“”被放入“no namespace”中,现在它和它的后代不在文档元素中声明的名称空间中。对于那些在“no namespace”中的用户,在选择/匹配表达式中不要使用名称空间前缀。 –
如果您的输入不是标准的,而且您不确定元素将被绑定到什么时候/哪个名称空间,则可以使用更通用的匹配表达式,该表达式只关心local-name()而不关心名称空间 - URI()。例如* [local-name()='WKYMD'] –