XSLT гуру,XSLT-документа() результат функции содержит нежелательные Xmlns = ""
У меня есть XSLT, который в том числе нежелательный Xmlns = "" в выходном сигнале. Я видел эту проблему/заданный вопрос и много раз отвечал на этом сайте, но, похоже, я не могу получить ответы на все, что я делаю. И я должен предупредить вас, что я новичок в XSLT и не очень хорош в этом.
Мой XSLT собирает набор данных из приложения, которое его вызывает, а затем также использует document() для получения дополнительных данных. Это все работает отлично, мне просто нужно избавиться от Xmlns = «»
XML, называют документом() является
<?xml version="1.0" encoding="UTF-8"?><BiExport xmlns="">
<ExportData xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Phone>8885551212</Phone>
<ClientRefCmtSuffix/>
<UDFData>
<DictionaryEntry>
<Key xsi:type="xsd:string">MyCompany Completed Date</Key>
<Value xsi:type="xsd:string">06/24/2013</Value>
</DictionaryEntry>
<DictionaryEntry>
<Key xsi:type="xsd:string">Rush</Key>
<Value xsi:type="xsd:string">0</Value>
</DictionaryEntry>
<DictionaryEntry>
<Key xsi:type="xsd:string">Suffix</Key>
<Value xsi:type="xsd:string">0000000000</Value>
</DictionaryEntry>
</UDFData>
<ReportCreateDate>2014-09-26T15:45:48.83952-07:00</ReportCreateDate>
</ExportData>
</BiExport>
И да, я не знаю, что это имеет <BiExport xmlns="">
, не могу 't измените это, и даже когда я удалил его перед применением моего XSLT, это не имело никакого значения.
Мой XSLT является
<?xml version='1.0' ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:bean="http://www.MyCompany.com/eventgenerator/beans">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes" omit-xml-declaration="no" />
<xsl:variable name="ReportCreateDate" select="bean:FileEvent/bean:Context[@Id='XPathStep']/bean:Item[@Name='ReportCreateDate']/@Value"/>
<xsl:variable name="PDFFile" select="concat($PDFFilename, '.', $PDFFileExt)"/>
<xsl:variable name="InputFile" select="bean:FileEvent/bean:Context[@Id='XPathStep']/bean:Item[@Name='InputFile']/@Value"/>
<xsl:variable name="PDFFilename" select="bean:FileEvent/bean:Context[@Id='XSLTStep']/bean:Item[@Name='PDFFilename']/@Value"/>
<xsl:variable name="InputFilePath" select="bean:FileEvent/bean:Context[@Id='ArchiveMessageStep']/bean:Item[@Name='ArchiveDirectory']/@Value"/>
<xsl:variable name="InputFileString" select="concat($InputFilePath, '\', $PDFFilename, '.xml')"/>
<xsl:template name="UDFs" match="document($InputFileString)/BiExport/ExportData/UDFData/DictionaryEntry">
<xsl:param name="pKey" select="." />
<Item name="{$pKey}">
<xsl:value-of select="../Value"/>
</Item>
</xsl:template>
<xsl:template match="/">
<MDXPackage version="1.0" xmlns="http://www.MyCompany.com/schemas">
<Payload>
<PayloadContext>
<xsl:apply-templates select="document($InputFileString)/BiExport/ExportData/UDFData/DictionaryEntry/Key" />
<xsl:choose>
<xsl:when test="string($ReportCreateDate)">
<Item name="ReportCreateDate">
<xsl:value-of select="$ReportCreateDate"/>
</Item>
</xsl:when>
<xsl:otherwise></xsl:otherwise>
</xsl:choose>
<xsl:choose>
<xsl:when test="string($PDFFile)">
<Item name="PDFFile">
<xsl:value-of select="$PDFFile"/>
</Item>
</xsl:when>
<xsl:otherwise></xsl:otherwise>
</xsl:choose>
<!-- more of the same follows-->
</PayloadContext>
</Payload>
</MDXPackage>
</xsl:template>
</xsl:stylesheet>
И выход
<MDXPackage xmlns="http://www.mitchell.com/schemas" version="1.0">
<Payload>
<PayloadContext>
<Item xmlns="" name="MyCompany Completed Date">06/24/2013</Item>
<Item xmlns="" name="Rush">0</Item>
<Item xmlns="" name="Suffix">0000000000</Item>
<Item name="ReportCreateDate">2014-09-26T13:53:28.3831684-07:00</Item>
<Item name="ClaimantPhone">8885551212</Item>
</PayloadContext>
</Payload>
</MDXPackage>
Заранее спасибо за любую помощь в понимании того, почему я получаю пустую декларацию пространства имен и как избавиться от него.
DL
Что входит в ваш документ ввода (документ XML, к которому применяется преобразование)? –