Я хочу преобразовать XML-документ. Источник XML выглядит следующим образом:Имена динамических элементов
<svc:ElementList>
<svc:Element>
<Year>2007</Year>
</svc:Element>
<svc:Element>
<Year>2006</Year>
</svc:Element>
<svc:Element>
<Year>2005</Year>
</svc:Element>
</svc:ElementList>
Я хочу, чтобы превратить это в:
<ElementList>
<NewTag2007/>
<NewTag2006/>
<NewTag2005/>
</ElementList>
Следующая строка кода не работает:
<xsl:element name="{concat('NewTag',Element/Year)}"/>
Выход серии элементов, которые выглядят так: < NewTag>. (Без пробелов ...)
"// Элемент/год", "./Element/Year" и "// SVC: Элемент/год" не работает. Одним из осложнений является то, что тег «Элемент» находится в пространстве имен «svc», в то время как тег «Год» находится в пространстве имен по умолчанию.
Так или иначе, я столкнулся с проблемой пространства имен или неправильно использую функцию concat()?
Рад, что решение работает. Но в целом я бы рекомендовал НЕ создавать имена тегов во время выполнения на лету (хотя он работает!). Я понимаю структуру xml TAG более статическим образом. Моим решением было бы: взять такой статический XML-тег, как с таким атрибутом. Вы можете получить доступ к нему с помощью XSLT и XPath с помощью «element [year =« 2007 »]. Таким образом, вы не теряете гибкость, а получаете безопасность и согласованность ... Только то, что вам нужно: –
Sauer
2016-01-21 11:02:59