0
我有下列XML片段:對XSL文檔使用多個名稱空間?
<?xml version="1.0" encoding="UTF-8"?>
<Envelope xmlns="http://schemas.microsoft.com/dynamics/2008/01/documents/Message">
<Header>
<MessageId>{11EA62F5-543A-4483-B216-91E526AE2319}</MessageId>
<SourceEndpoint>SomeSource</SourceEndpoint>
<DestinationEndpoint>SomeDestination</DestinationEndpoint>
</Header>
<Body>
<MessageParts xmlns="http://schemas.microsoft.com/dynamics/2008/01/documents/Message">
<SalesInvoice xmlns="http://schemas.microsoft.com/dynamics/2008/01/documents/SalesInvoice">
<DocPurpose>Original</DocPurpose>
<SenderId>Me</SenderId>
<CustInvoiceJour class="entity">
<_DocumentHash>ddd70464452c64d5a35dba5ec50cc03a</_DocumentHash>
<Backorder>No</Backorder>
</CustInvoiceJour>
</SalesInvoice>
</MessageInvoice>
</Body>
</Envelope>
正如你所看到的,這個使用多個命名空間,所以當我想要改造這個使用XSL,我不知道我應該使用哪個命名空間,因爲我需要從Header
標籤和SalesInvoice
標籤收集一些信息。
這裏是我的XSL文件:
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xheader="http://schemas.microsoft.com/dynamics/2008/01/documents/Message"
exclude-result-prefixes="xheader"
>
<xsl:output method="xml" indent="yes" />
<xsl:template match="/">
<header>
<name><xsl:value-of select="/*/*/xheader:SourceEndpoint" /></name>
</header>
<body>
<test><xsl:value-of select="/*/*/*/*/*/xheader:Backorder" /></test>
</body>
</xsl:template>
</xsl:stylesheet>
在轉換後的文檔,填充了SourceEndpoint
但Backorder
不是,因爲它使用了不同的命名空間。那麼我怎樣才能讓它使用不同的命名空間呢?
謝謝,但如果我想從'排除對結果prefixes' – CallumVass
同時排除'xheader'和'xsales'只需包含兩個 - exclude-result-prefixes =「xheader xsales」。我會更新答案來做到這一點。 –
謝謝,由於某種原因,我嘗試了,但用逗號:'exclude-result-prefixes =「xheader,xsales」'! – CallumVass