XSL 无法读入带有标记"Document xmlns="urn:iso:st"的 xml



我需要帮助才能使用此定义读取 xml 文件

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<Document xmlns="urn:iso:std:iso:20022:tech:xsd:pain.001.001.03" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<CstmrCdtTrfInitn>
        <GrpHdr>
            <NbOfTxs>3</NbOfTxs>

问题是当 xml 具有文档 xmlns 时,我无法读取节点...(我测试删除了这一行,我可以读取节点)

我的xsl是这样的:

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output encoding="UTF-8" indent="yes" method="xml" standalone="no" omit-xml-declaration="yes"/>
       <xsl:template match='GrpHdr'>
           <NbOfTxs><xsl:value-of select="NbOfTxs"/></NbOfTxs>
       </xsl:template>
</xsl:stylesheet>

输入 XML 中的元素具有默认命名空间。您还需要在 XSLT 样式表中声明此命名空间,并为要匹配的任何输入元素添加前缀

如果要输出NbOfTxs元素及其内容,则无需匹配GrpHdr元素。

输入

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<Document xmlns="urn:iso:std:iso:20022:tech:xsd:pain.001.001.03" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <CstmrCdtTrfInitn>
        <GrpHdr>
            <NbOfTxs>3</NbOfTxs>
        </GrpHdr>
    </CstmrCdtTrfInitn>
</Document>

样式表

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
xmlns:nsa="urn:iso:std:iso:20022:tech:xsd:pain.001.001.03">
   <xsl:output encoding="UTF-8" indent="yes" method="xml" standalone="no" omit-xml-declaration="yes"/>
   <xsl:template match='nsa:NbOfTxs'>
      <xsl:copy>
         <xsl:value-of select="."/>
      </xsl:copy>
   </xsl:template>
</xsl:stylesheet>

输出

请注意,NbOfTxs 元素在输出中仍然有其命名空间(您没有说是否要保留它)。

<NbOfTxs xmlns="urn:iso:std:iso:20022:tech:xsd:pain.001.001.03" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">3</NbOfTxs>

在 XSLT 中为命名空间声明命名空间前缀,然后选择使用该前缀:在此处查看类似问题

如何从带有命名空间的XML中"选择"?

相关内容

  • 没有找到相关文章

最新更新