При использовании функции xslt document (). Чтение, например, следующего xml:
<Products>
<Product productCode="SQUARE-BLUE-EXTRA-A-10-MAY" messageType="FOUNTAIN" messageTag="F"/>
<Product productCode="SQUARE-RED-EXTRA-B-20-JUNE" messageType="FOUNTAIN" messageTag="F"/>
</Products>
Результатом является набор узлов, который может быть сохранен в переменной. Вместо чтения документа xml я хочу создать эту переменную с набором узлов динамически на основе ввода xml.
пример ввода xml:
<Root>
<Object>
<QuoteLineItems>
<Object>
<Product2Id>
<ProductCode>SQUARE</ProductCode>
</Product2Id>
<QuoteLineItems>
<Object>
<Product2Id>
<ProductCode>BLUE</ProductCode>
</Product2Id>
<QuoteLineItems>
<Object>
<ServiceDate>MAY</ServiceDate>
<attributes>
<Object>
<attributeuniquecode>ATTR_VOLUMEPERCENTAGE</attributeuniquecode>
<attributedisplayname>Volume percentage</attributedisplayname>
<value>10</value>
</Object>
<Object>
<attributeuniquecode>ATTR_TYPE</attributeuniquecode>
<attributedisplayname>Type</attributedisplayname>
<value>A</value>
</Object>
</attributes>
<Product2Id>
<ProductCode>EXTRA</ProductCode>
</Product2Id>
<QuoteLineItems/>
</Object>
</QuoteLineItems>
</Object>
<Object>
<Product2Id>
<ProductCode>RED</ProductCode>
</Product2Id>
<QuoteLineItems>
<Object>
<ServiceDate>JUNE</ServiceDate>
<attributes>
<Object>
<attributeuniquecode>ATTR_VOLUMEPERCENTAGE</attributeuniquecode>
<attributedisplayname>Volume percentage</attributedisplayname>
<value>20</value>
</Object>
<Object>
<attributeuniquecode>ATTR_TYPE</attributeuniquecode>
<attributedisplayname>Type</attributedisplayname>
<value>B</value>
</Object>
</attributes>
<Product2Id>
<ProductCode>EXTRA</ProductCode>
</Product2Id>
<QuoteLineItems/>
</Object>
</QuoteLineItems>
</Object>
</QuoteLineItems>
</Object>
</QuoteLineItems>
</Object>
</Root>
i хочу сделать это, потому что мне нужно проверить определенный ввод xml по списку поиска (сначала xml). при дальнейшем расширении список поиска с возможными комбинациями будет бесконечным. поэтому я хочу создать точно такой же список поиска на основе ввода xml и поместить его в переменную с тем же форматом, что и функцию document ().
Я пробовал что-то и выключен в течение последних часов, но я не могу найти что-то приличное. возможно ли это?
Это мое текущее использование функции документа:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:variable name="products" select="document(file.xml)/Products/Product[@messageType=$messageType]/@productCode"/>
<Messages>
<xsl:for-each select="$products">
<xsl:apply-templates mode="initial" select="$root">
<xsl:with-param name="productCode" select="."/>
</xsl:apply-templates>
</xsl:for-each>
</Messages>
</xsl:stylesheet>
как вы можете видеть, у меня есть переменная $ products. который содержит весь мой список поиска. Затем я могу применить шаблон для каждого продукта. второй документ - это просто мой ввод xml. и я хочу создать список поиска в переменной на основе этого ввода xml.