2015-05-22 6 views
0

Я пытаюсь создать следующую структуру в шаблоне XSLT.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> 

или другие элементы нс: е3 и т.д. (хотя конечная), на основе параметра шаблона (скажем type). Обычно я мог использовать конструкцию xls:choose. В таком случае я бы дублировал дочерние элементы (значения которых также являются параметрами шаблона).

Есть ли способ в XSLT динамически предположить имя элемента ns:e1 или ns:e2, чтобы я мог поместить дочерние элементы один раз в свой родитель. Я мог бы сохранить усилия по техническому обслуживанию позже, если я изменил дочерние элементы или значения (меняйте один раз в одном месте и избегайте ошибок из-за человеческих ошибок).

Спасибо за вашу помощь заранее.

ответ

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> 
+0

@VivekRagunathan, если решить вашу проблему, пожалуйста, примите ответ. Благодарю. – potame

Смежные вопросы