Xslt 生成动态xmlns

Xslt 生成动态xmlns,xslt,Xslt,我想动态生成xmlns属性 我想在XSL中生成: 如何在XSL中实现这一点 谢谢, 亚历克斯 更新: <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output omit-xml-declaration="yes"/> <xsl:variable name="vDynamicPart1" select="'DynPArt1'"/&g

我想动态生成xmlns属性

我想在XSL中生成:

如何在XSL中实现这一点

谢谢, 亚历克斯

更新

<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output omit-xml-declaration="yes"/>

 <xsl:variable name="vDynamicPart1" select="'DynPArt1'"/>
 <xsl:variable name="vDynamicPart2" select="'DynPArt2'"/>

 <xsl:template match="/">

   <xsl:element name="Common:MainPageBase"
   namespace="clr-namespace:{$vDynamicPart1};assembly={$vDynamicPart2}"/>

 </xsl:template>
</xsl:stylesheet>
更准确地说,这里是我需要生成的内容。我希望能够使用变量更改的部分是“THISPARTISDYNAMIC”:



有什么想法吗?

这一转变:

<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output omit-xml-declaration="yes"/>

 <xsl:variable name="vDynamicPart1" select="'DynPArt1'"/>
 <xsl:variable name="vDynamicPart2" select="'DynPArt2'"/>

 <xsl:template match="/">

   <xsl:element name="Common:MainPageBase"
   namespace="clr-namespace:{$vDynamicPart1};assembly={$vDynamicPart2}"/>

 </xsl:template>
</xsl:stylesheet>


应用于任何XML文档(未使用)时,会产生所需的结果

您可以动态设置元素的命名空间:

<param name="ns1" >http://localhost/ns1</param>
...
<xsl:element name="test" namespace="{$ns1}" >... </xsl:element>
http://localhost/ns1
...
... 
但这不会输出名称空间前缀——它会更改该元素上的默认名称空间

我认为没有一种方法可以输出带有动态名称空间URI的前缀。 类似于:
按字面意思输出:

如果这确实是您所需要的输出,那么我认为您 修改序列化程序,或仅使用占位符URI和 对输出的xml文本执行文本替换

[XSLT不处理XML语法。它处理XML树。
解析输入和序列化输出超出了它的范围。]

请看这篇文章,特别是这一部分。

好问题(+1)。有关完整的解决方案,请参见我的答案。:)感谢您的回复,但“ThisPartIsDynamic”不是动态的。。我想做一些类似clr名称空间的事情:;assembly=但我知道我不能这么做…@alexbf:对不起,我没有注意到。我更新了我的解决方案,它解决了你的问题。它不起作用。我们得到了,但我们真正想要的是@alexbf:我的解决方案就是生成你的问题所说的想要的。现在你想要点别的!!!那么,请再问一个问题。你现在的问题已经完全回答了。如果你不知道自己到底想要什么,那么不要问任何问题——不要浪费读者的时间!!!