Я создаю вывод XML с использованием XSLT-преобразования.Я добавил узлы BizData и Pyld, чтобы окружить данные заголовка и полезной нагрузки.Я получаю нежелательный атрибут пространства имен, который появляется в BizData и Pyld, и я не уверен, откуда он берется.
Я удалил все данные из тега Document, поскольку их много, но все они заполнены какожидается.
XSLT выглядит следующим образом:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:ext="http://exslt.org/common">
<xsl:strip-space elements="*" />
<xsl:output indent="yes" />
<xsl:template match="/Root/node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="/">
<xsl:variable name="vrtfPass1Result">
<xsl:apply-templates/>
</xsl:variable>
<xsl:apply-templates mode="mPass2"
select="ext:node-set($vrtfPass1Result)/*"/>
</xsl:template>
<xsl:template match="/Root">
<BizData>
<Hdr>
<AppHdr>
<CharSet>String</CharSet>
<Fr>
<OrgId>
<Id>
<OrgId>
<Othr>
<Id>4ABC</Id>
</Othr>
</OrgId>
</Id>
</OrgId>
</Fr>
<To>
<OrgId>
<Id>
<OrgId>
<Othr>
<Id>DRRL</Id>
</Othr>
</OrgId>
</Id>
</OrgId>
</To>
<BizMsgIdr>EUSF</BizMsgIdr>
<MsgDefIdr>a</MsgDefIdr>
<CreDt>2001-12-17T09:30:47Z</CreDt>
</AppHdr>
</Hdr>
</BizData>
<Pyld>
<Document>
.....
</Document>
</Pyld>
</xsl:template>
<xsl:template match="@*|node()" mode="mPass2">
<xsl:if test="normalize-space(.) != '' or ./@* != ''">
<xsl:copy>
<xsl:copy-of select="@*"/>
<xsl:apply-templates select="node()|@*" mode="mPass2"/>
</xsl:copy>
</xsl:if>
</xsl:template>
<xsl:template match=
"*[not(@*|*|comment()|processing-instruction())
and normalize-space()=''
]" mode="mPass2"/>
</xsl:stylesheet>
Я получаю:
<?xml version="1.0" encoding="utf-8"?>
<BizData xmlns:ext="http://exslt.org/common"> <<<WHY IS THERE THE ATTRIBUTE ADDED HERE
<Hdr>
<AppHdr>
<CharSet>String</CharSet>
<Fr>
<OrgId>
<Id>
<OrgId>
<Othr>
<Id>4ABC</Id>
</Othr>
</OrgId>
</Id>
</OrgId>
</Fr>
<To>
<OrgId>
<Id>
<OrgId>
<Othr>
<Id>DRRL</Id>
</Othr>
</OrgId>
</Id>
</OrgId>
</To>
<BizMsgIdr>EUSF</BizMsgIdr>
<MsgDefIdr>a</MsgDefIdr>
<CreDt>2001-12-17T09:30:47Z</CreDt>
</AppHdr>
</Hdr>
</BizData>
<Pyld xmlns:ext="http://exslt.org/common"> <<<WHY IS THERE THE ATTRIBUTE ADDED HERE
<Document>
.....
</Document>
</Pyld>
Не уверен, почему атрибут - xmlns: ext = "http://exslt.org/common" -заселяет эти элементы ...
Заранее спасибо, Саул