我在xslt中需要这个,但xmlns:s =“{$ service-uri}”没有提取:
<xsl:variable name="service-uri" select="'http://something/'"/>
...
<xsl:template match="cxf:cxfEndpoint[last()]">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
<cxf:cxfEndpoint
xmlns:s="{$service-uri}"
endpointName="s:{$service-name}Port"
id="{$service-name}_RemoteEndpoint"
serviceName="s:{$service-name}"
wsdlURL="wsdl/remote/{$service-name}.wsdl">
<cxf:properties>
<entry key="continuationTimeout" value="120000"/>
<entry key="mtom-enabled" value="true"/>
<entry key="dataFormat" value="PAYLOAD"/>
</cxf:properties>
</cxf:cxfEndpoint>
</xsl:template>
如何在命名空间定义中提取service-uri变量?是Zamek
1 回答
属性值模板不能用于名称空间声明 . 请记住,XSLT是XML,并且XML解析器和XSLT处理器必须理解命名空间声明
xmlns:x="..."
.在XSLT 2.0中,您可以使用
xsl:namespace
指令动态创建命名空间节点:如果你在1.0中则更难 . 您可以通过在相关命名空间中创建元素节点来完成此操作:
然后将相关的命名空间节点复制到新元素: