我是 xslt 的新手,我需要能夠將 uri 動態注入到 xmlns 中。我必須使用 1.0 版。環顧四周,我發現https://www.oxygenxml.com/archives/xsl-list/200701/msg00185.html似乎展示了如何做我想做的事情,但是,我無法弄清楚如何去做
<xsl:stylesheet version="1.0"
xmlns:xsl="http://w3.org/1999/XSL/Transform"
>
<xsl:output method="xml" encoding="utf-8" indent="yes" />
<xsl:param name="someparam">
<xsl:param uri=dynamic uri>
<xsl:template name="envelope" match="/">
<soapenv:Envelope xmlns:soapenv="http://sxhemas.xmlsoap.org/soap/envelope/"
xmlns:some="http://someurl"
xmlns:dynamic="dynamically injected uri"
xmlns:dynamic2="dynamically injected uri">
<soapenv:Header>
<some:Data>
</Data>
</soapenv:Header>
<soapenv:Body>
<dynamic:methodCall>
<dynamic2:Param><xsl:value-of select="$someparam"/></dynamic2:Param>
</dynamic:methodCall>
</soapenv:Body>
</soapenv:Envelope>
</xsl:template>
</xsl:stylesheet>
我想知道如何為 dynamic 和 dynamic2 設定 uri
uj5u.com熱心網友回復:
考慮以下簡化示例:
XSLT 1.0
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:param name="dyn-uri">example.com/123</xsl:param>
<xsl:template match="/">
<soapenv:Envelope xmlns:soapenv="http://sxhemas.xmlsoap.org/soap/envelope/">
<soapenv:Header/>
<soapenv:Body>
<xsl:element name="dynamic:methodCall" namespace="{$dyn-uri}">
<xsl:value-of select="123"/>
</xsl:element>
</soapenv:Body>
</soapenv:Envelope>
</xsl:template>
</xsl:stylesheet>
在大多數(如果不是所有)XSLT 處理器中,這將產生:
結果
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://sxhemas.xmlsoap.org/soap/envelope/">
<soapenv:Header/>
<soapenv:Body>
<dynamic:methodCall xmlns:dynamic="example.com/123">123</dynamic:methodCall>
</soapenv:Body>
</soapenv:Envelope>
這個結果在語意上等同于:
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://sxhemas.xmlsoap.org/soap/envelope/" xmlns:dynamic="example.com/123">
<soapenv:Header/>
<soapenv:Body>
<dynamic:methodCall>123</dynamic:methodCall>
</soapenv:Body>
</soapenv:Envelope>
這似乎是您期望的結果。任何符合標準的 XML 決議器都會將這兩個檔案決議為一棵相同的樹。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/316664.html
