我需要帮助才能读入带有此定义的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具有Document 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>
答案 0 :(得分:2)
输入XML中的元素具有默认命名空间。您还需要在XSLT样式表中声明此命名空间,并且前缀要匹配的任何输入元素。
如果您想要输出GrpHdr
元素及其内容,则无需匹配NbOfTxs
元素。
<强>输入强>
<?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>
答案 1 :(得分:0)
在XSLT中声明名称空间的名称空间前缀,然后选择使用该前缀: 在这里看到类似的问题