我正在尝试在XSLT模板中生成以下结构。
<ns:e1>
<child1>some value<child1>
<child2>some value<child2>
<child3>some value<child3>
</ns:e1>
或
<ns:e2>
<child1>some value<child1>
<child2>some value<child2>
<child3>some value<child3>
</ns:e2>
或其他元素ns:e3等(尽管是有限的),基于模板参数(比如type
)。通常我可以使用xls:choose
构造。在这种情况下,我将复制子元素(其值也是模板参数)。
在XSLT中是否有一种方法可以动态地假设元素名称ns:e1
或ns:e2
,这样我就可以将子元素放在父元素中一次。如果我更改子元素或值(在一个地方更改一次并避免由于人为错误导致的错误),我可以稍后节省维护工作。
提前感谢您的帮助。
答案 0 :(得分:0)
是的,您可以使用xsl:element
指令来执行此操作。
假设您总是希望<child1>some value<child1><child2>some value<child2><child3>some value<child3>
作为父元素的子元素,您可以像这样重写代码:
<xsl:variable name="elementName">
<!-- compute the element name here ... -->
</xsl:variable>
<!-- Here we create an element having the name computed in variable elementName -->
<xsl:element name="{$elementName}" namespace="http://www.anamespace.com/and/so/on">
<child1>some value<child1>
<child2>some value<child2>
<child3>some value<child3>
</xsl:element>