Я пытаюсь изменить порядок элементов в XML с помощью XSLT 1.0. Ниже представлен небольшой фрагмент 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>
Проблема, когда я преобразовать я не получаю никаких изменений в порядке, но я удалить Xmlns = «http://kiris.nps21.org/xsd» от
<RIMSDB1 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>
Может ли кто-нибудь пролить свет на то, что происходит, если есть лучший способ изменить порядок.
Заранее спасибо.
@ Мадс-что работало для меня, но я столкнулся с каким-то другим вопросом. Как справиться с этим с пространством имен в обоих родительских и дочерних тегов, например ' \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", и теперь он и его потомки НЕ находятся в пространстве имен, объявленном в элементе документа. Для тех, кто не имеет пространства имен, вы не используете префикс пространства имен в выражениях select/match. –
Если ваш вход не является стандартным, и вы не уверены, когда/в каком пространстве имен будут привязаны элементы, вы можете использовать более общее выражение соответствия, которое заботится только о local-name() и не имеет никакого отношения к пространству имен, URI(). Например, * [local-name() = 'WKYMD'] –