Я новичок в XSL. Я пытаюсь читать значения элементов XML с помощью XSL-файла. Мой файл XML, как:Пытается прочитать значение элемента xml в xsl
<PersonList>
<Person>
<Name>person1</Name>
<Age>21</Age>
</Person>
<Person>
<Name>person2</Name>
<Age>21</Age>
</Person>
</PersonList>
Мой файл XSL, как:
<xsl:stylesheet version="1.0" xmlns=...>
<xsl:output method="xml" indent="yes" encoding="utf-8" omit-xml declaration="no" />
<xsl template match="/">
<PersonList>
<xsl:for-each select="PersonList/Person">
<Person>
<xsl:for-each select="*">
<xsl:variable name="elementName">
<xsl:value-of select="name(.)" />
</xsl:variable>
<xsl:variable name="elementValue">
???
</xsl:variable>
</xsl:for-each>
</Person>
</xsl:for-each>
</PersonList>
</xsl:template>
</xsl:stylesheet>
Как следует заменить ???
, чтобы получить значение элемента, хранящегося в переменной elementName
. Я пробовал следующие три строки отдельно:
<xsl:value-of select="value(.)" />
<xsl:value-of select="value($elementName)" />
<xsl:value-of select="$elementName" />
но не повезло. Пожалуйста помоги!
Рассмотрите возможность размещения XML-результата, который вы хотите создать с помощью XSLT для введенного вами примера ввода XML. С вашего примера XSLT трудно сказать, чего вы хотите добиться, поскольку у него есть синтаксические ошибки, такие как 'xsl template' и логические недостатки, такие как пустые' '' '' '' '' '' или '' name (.) ', Где узлом контекста является корневой узел. –
Я исправил xsl. Пожалуйста, рассмотрите сейчас. Я хочу получить значения Person1, 21, Person2, 21 в переменной elementValue в цикле. – user1818397
Вы должны действительно прочитать разницу между обработкой _pull_ (что вы делаете) и стилем _push_. Для такой задачи стиль push-style, где вы используете шаблоны и шаблоны приложений, намного более естественен и соответствует способу работы XSL-процессора. Похоже, вы просто пытаетесь скопировать ввод на вывод ... выполните поиск Google для «шаблона идентификации XSL». –