XSLT:基于模板参数

时间:2015-05-22 04:15:12

标签: xslt-1.0

我正在尝试在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:e1ns:e2,这样我就可以将子元素放在父元素中一次。如果我更改子元素或值(在一个地方更改一次并避免由于人为错误导致的错误),我可以稍后节省维护工作。

提前感谢您的帮助。

1 个答案:

答案 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>