Веб Дизайн - статьи



Двухступенчатое преобразование XML-документа - часть 5


Для выделения всех дочерних элементов - используется символ "*", для выделения элемента, расположенного просто "ниже" по дереву(на любом уровне вложенности) символ - "//". Условие на значение в запросе должно заключаться в символы "[" и "]". Для выбора значения атрибута в условии указывается символ @.

Примеры простых шаблонов:

" Transaction/"возвращает дочерние элементы для элемента Transaction
"Consignor//"список всех элементов, вложенных в Consignor
"SegmentName[@Id]"список элементов SegmentName, в котором определен атрибут Id
"SegmentName [@Id=2]"поиск всех тагов, которые имеют значение атрибута id равное 2

При формировании ответа на сообщение обратное преобразование из метаданных в XML-документ, осуществляется с помощью следующего шаблона:

<xsl:template>

xsl:for-each select="//Segment/"> <Price> <xsl:value-of select=" Segment[@Name="PRI"]/DataElement[@Id="2"]"/> </Price> </xsl:for-each>

</xsl:template>

Данный запрос интерпретируется как: выбрать все значения из тагов <DataElement&gt;, имеющие значение параметра Id="2", и которые имеют вхождение в таги <Segment> со значением параметра Name="PRI".

Выполнение более сложных запросов, например, при формировании метаданных для сегмента NAD осуществляется, учитывая уровни вложенности:

<xsl:template>

xsl:for-each select="//Consignor"> <Segment Name="NAD"> <DataElement id=10 dic=3035> SE </DataElement>

<DataElement id=40> <xsl:value-of select="//Consignor/ConsignorName"/> </DataElement>

<DataElement id=50> <xsl:value-of select="//Consignor/Address/Street"/> </DataElement>

<DataElement id=60> <xsl:value-of select="//Consignor/Address/City"/> </DataElement>

<DataElement id=80> <xsl:value-of select="//Consignor/Address/Zip"/> </DataElement>




Содержание  Назад  Вперед