в одной из моих полезных данных xml Мне нужно добавить одно пространство имен после строки ниже.Добавление пространства имен с использованием XSLT
<?xml version="1.0" encoding="UTF-8"?>
<ep:Document xmlns:ep="namespace here"
xmlns:gk="namespace here"
xmlns:sh="namespace here" schemaVersion="" creationDate="">
после этого я nedd добавить Xmlns пространства имен: XSI = "http://www.w3.org/2001/XMLSchema-instance">
ожидаемый результат должен быть
<?xml version="1.0" encoding="UTF-8"?>
<ep:Document xmlns:ep="namespace here"
xmlns:gk="namespace here"
xmlns:sh="namespace here" schemaVersion="" creationDate=""xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
не могли бы вы помочь в этом. Позвольте мне уточнить мое требование. В фактическом входном сообщении я получаю полезную нагрузку без каких-либо пространств имен. Это выглядит ниже.
<?xml version="1.0" encoding="UTF-8"?>
<document>
</document>
в ч/б документе у нас есть запас полезной нагрузки.
после этого я использовал XSLT-код для добавления пространств имен и префиксов в полезной нагрузке. ниже - мой XSLT-код.
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:ep="namespace here"
xmlns:sh="namespace here"
xmlns:gk="namespace here">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<!-- identity transform -->
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="Document">
<ep:Document>
<xsl:apply-templates select="node()|@*"/>
</ep:Document>
</xsl:template>
<xsl:template match="Extension|Extension//*">
<xsl:element name="gk:{name()}">
<xsl:apply-templates select="node()|@*"/>
</xsl:element>
</xsl:template>
<xsl:template match="Header|Header//*">
<xsl:element name="sh:{name()}">
<xsl:apply-templates select="node()|@*"/>
</xsl:element>
</xsl:stylesheet>
после использования этого кода выхода я получаю выглядит, как показано ниже.
<?xml version="1.0" encoding="UTF-8"?>
<ep:Document xmlns:ep="namespace here"
xmlns:gk="namespace here"
xmlns:sh="namespace here" schemaVersion="" creationDate="">
и остальные payload.so мне нужно еще одно пространство имен после версии схемы и CreationDate в существующем коде, как указано в сообщении.
Нам нужно увидеть существующий XSLT - по крайней мере, часть, которая обрабатывает элемент 'ep: Document'. Обратите внимание, что это (другое?) Избыточное требование: если вашему выводу нужна привязка префикса 'xsi', ваш процессор автоматически включил бы его (или выбросил ошибку). –
Позвольте мне уточнить мое требование. в фактической полезной нагрузке ввода я получаю сообщение без каких-либо пространств имен. –
Я отредактировал свой вопрос. пожалуйста, узнайте подробности. –