Любой способ получить доступ к значению из xml

#xslt-2.0

#xslt-2.0

Вопрос:

Я пытаюсь получить доступ к значениям из моего XML-файла, используя «title» xpath без использования /Para000_*, потому что _1,_2 является динамическим.

Есть ли какой-либо способ получить доступ к значению без использования номера пункта, пожалуйста, помогите мне, мне нужно значение только «Mango», но я получаю значения «Mango Orange»

У меня есть xml следующим образом:

  <Content code="" title="Food" type="Fruits" paraCode="2">
  <props>
    <para001_2 title="F1">Mango</para001_2>
    <para002_2 title="F2">Grape</para002_2>
 </props>
 </Content>
 <Content code="" title="Food" type="Fruits" paraCode="2">
 <props>
   <para001_2 title="F1">Orange</para001_2>
   <para002_2 title="F2">Grape</para002_2>
 </props>
 </Content>

tried XSLT as follows:
<xsl:variable name="FruitName" select="/Content/props/*[@title = 'F1']"/>
  

Результат:
Mango

Ответ №1:

Используйте это

 <xsl:variable name="FruitName" select="/Content/props/*[@title = 'F1'][not(preceding::Content/props/*[@title = 'F1'])]"/>
  

Комментарии:

1. Привет, пожалуйста, смотрите выше, я сталкиваюсь с этой проблемой ….. я получаю все значения с заголовком F1

2. Спасибо за помощь, я всегда получаю только первое значение…. как я могу получить второе значение …. т. Е. Оранжевый, потому что мне нужно просмотреть все значения один раз

3. вы можете использовать for-each select="Content/props/*[@title = 'F1']" для перебора всех значений

Ответ №2:

Пожалуйста, укажите, на каком основании / условии вы хотите получить доступ к узлу <Content>

Для текущего ввода, чтобы получить доступ к первому узлу title

Решение может быть:

 <xsl:value-of select="root/Content/props/*[1][@title = 'F1']"/>