替換XML標籤下面我有XML通過XSLT映射
<?xml version="1.0" encoding="UTF-8"?>
<ConnectInvoice type="INVOICE" xmlns="http://www.scoobydoo.com/xml/ns/ocp">
<FileSize id="78447274">
<FileHeader>
<FileNumber>15043662</FileNumber>
</FileHeader>
</FileSize>
</ConnectInvoice>
這就需要下面的結構轉換爲:
<?xml version="1.0" encoding="UTF-8"?>
<ConnectInvoice type="INVOICE" xmlns="http://www.scoobydoo.com/xml/ns/ocp">
<Invoice id="78447274">
<FileHeader>
<FileNumber>15043662</FileNumber>
</FileHeader>
</Invoice>
</ConnectInvoice>
請注意, 「ID」 該值是動態的。
如果xmlns =「http://www.scoobydoo.com/xml/ns/ocp」在XML中不存在,但XSLT在上述xml位於XML中時不執行任何操作,則XSLT映射工作正常。有人可以幫我解決我的XSLT映射
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="FileSize">
<Invoice><xsl:apply-templates select="node()|@*"/></Invoice>
</xsl:template>
</xsl:stylesheet>
非常感謝
更新:
如果我用下面的XSLT。 XML標記文件大小是過得去發票(這是我想要的)替換,但我也得到它(<Invoice id="78447273" xmlns:sd="scoobydoo.com/xml/ns/ocp">
)命名空間,我不想
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:sd="scoobydoo.com/xml/ns/ocp"; xmlns:xsl="w3.org/1999/XSL/Transform">;
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="sd:FileSize">
<Invoice><xsl:apply-templates select="node()|@*"/></Invoice>
</xsl:template></xsl:stylesheet>
嘗試在線搜索「XSLT命名空間」 - 您引用的xmlns屬性聲明所有元素都在特定的命名空間中,並且您的XSLT需要反映這一點。 (我不知道確切的語法,所以不要打擾問題;我只是想指出一些問題。) – IMSoP
謝謝。我更新了XSLT:<?xml version =「1.0」encoding =「UTF-8」?> XSL:模板> 的 的 xsl:template> xsl:stylesheet>。現在它在發票後添加命名空間: –
user2157477
請... _不要發佈代碼在評論中,_ ***它是不可讀的***。如果你對你的問題有更清楚的理解,[更新問題](http://stackoverflow.com/posts/32509696/edit)。 – Abel