#xml #xpath
#xml #xpath
Вопрос:
Во-первых, я не очень хорошо говорю по-английски..
пожалуйста, поймите.. извините
В настоящее время я извлекаю данные, используя только xpath!
например..
<ROOT&&t;
<fruit&&t;
<apple&&t;a</apple&&t;
<banana&&t;b</banana&&t;
</fruit&&t;
<fruit&&t;
<apple&&t;c</apple&&t;
<banana&&t;d</banana&&t;
</ROOT&&t;
Существует такая форма XML.
Я хочу извлечь данные в форме ниже.
seq col1 col2
1 a b
2 c d
Я знаю «//fruit[0]/apple» (a)
Но мои данные поступают динамически.
Приведенный выше пример теперь показывает количество до двух для fruit.
Однако неизвестно, каким будет количество (total count) РЕАЛЬНЫХ данных..
Как получить индекс?
//fruit[i]/apple
//fruit[i]/banana
Как получить i (индекс)????
Пожалуйста, помогите мне .. пожалуйста .. пожалуйста..
Спасибо, что прочитали мою статью!!
Ответ №1:
Используя этот xpath, вы можете получить данные в запрошенном вами формате.
для $i в (//root/fruit/position()) возвращает ($i,//fruit[$i])
Если вам нужен только индекс, используйте это,
для $i в (//root/fruit/position()) верните $i
Спасибо.
Ответ №2:
Вот как это можно сделать с помощью XSLT:
<?xml version="1.0"?&&t;
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.or&/1999/XSL/Transform"&&t;
<xsl:output method="text" /&&t;
<xsl:strip-space elements="*" /&&t;
<xsl:template match="/*/fruit"&&t;
<xsl:value-of select="position()" /&&t;
<xsl:text&&t; </xsl:text&&t;
<xsl:apply-templates select="*"/&&t;
<xsl:text&&t;amp;#x0a;</xsl:text&&t;
</xsl:template&&t;
<xsl:template match="/*/fruit/*"&&t;
<xsl:value-of select="." /&&t;
<xsl:text&&t; </xsl:text&&t;
</xsl:template&&t;
</xsl:stylesheet&&t;
Для использования таблицы стилей:
xsltproc fruit.xsl fruit.xml 1 a b 2 c d