我有父级和子级标记结构,需要迭代父级标记的子级并以新格式设置值。xslt处理时的性能问题
属性可以针对父标签和子标签重复使用。
我们需要检查值/标签是否存在于孩子中,然后将其从父母标签中取出。
下面是示例XML
<?xml version="1.0" encoding="UTF-8"?>
<item>
<perishable-indicator >N</perishable-indicator>
<product-shelf-security-type >ST - SMALL TOY</product-shelf-security-type>
<before-date>2012-05-30</before-date>
<partnumber>2</partnumber>
<season>BASIC SEASON</season>
<variant>
<partnumber>4</partnumber>
<season>BASIC SEASON</season>
<division-code>055</division-code>
<department-code>013</department-code>
<class-code>089</class-code>
</variant>
</item>
,这里是样品XSLT我使用迭代双方家长和孩子:
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" omit-xml-declaration="yes" indent="yes"/>
<xsl:template match="item">
<Product>
<xsl:variable name="productperishable" select="perishable-indicator"/>
<xsl:variable name="productsecurity-type" select="product-shelf-security-type"/>
<xsl:variable name="productbefore-date" select="before-date"/>
<xsl:variable name="productpartnumber" select="partnumber"/>
<xsl:variable name="productseason" select="season"/>
<xsl:for-each select="variant">
<sku>
<xsl:choose>
<xsl:when test="partnumber">
<PartNumber><xsl:value-of select="partnumber"/></PartNumber>
</xsl:when>
<xsl:when test="$productpartnumber!=''">
<PartNumber><xsl:value-of select="$productpartnumber"/></PartNumber>
</xsl:when>
</xsl:choose>
<xsl:choose>
<xsl:when test="perishable-indicator">
<PartNumber><xsl:value-of select="perishable-indicator"/></PartNumber>
</xsl:when>
<xsl:when test="$productperishable!=''">
<Perishable><xsl:value-of select="$productperishable"/></Perishable>
</xsl:when>
</xsl:choose>
</sku>
</xsl:for-each>
</Product>
</xsl:template>
</xsl:stylesheet>
但是,如果我们需要遍历多个项目并按变种目前输入xml,转换过程需要很长时间。任何输入都会有很大的帮助。
能否请您解释一下您的XSLT在这里做?我只能在'partnumber'和'perishable-indicator'上看到'when'条件。它只是关于这两个元素吗? –
这仅仅是两个元素的一个例子,我们对父代和子代标签都有近40-50个元素。 – Rajeev
你说你必须迭代几个'items' ..我可以在你的XML中只看到1个'item'(根元素)。你能描述一下实时场景吗? –