Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xml 每种类型的XSL都带有sort_Xml_Xslt - Fatal编程技术网

Xml 每种类型的XSL都带有sort

Xml 每种类型的XSL都带有sort,xml,xslt,Xml,Xslt,我已经有一段时间没有处理XPath/XSL了,我似乎无法让“sort”处理循环。对于下面的示例XML,我想做的是基于'TextValue'属性的值进行排序,其中'ExternalName'是'isDefault'。因此,对于示例XML和第一次排序尝试,我希望按照“Blah2”和“Blah1”的顺序进行迭代。我尝试了许多变体,甚至尝试了仅根据元素值进行排序,但似乎无法实现任何排序。任何帮助都将不胜感激 XML: 1. 胡说八道 衣服 2. 废话 衣服 排序尝试: <xsl:sort se

我已经有一段时间没有处理XPath/XSL了,我似乎无法让“sort”处理循环。对于下面的示例XML,我想做的是基于'TextValue'属性的值进行排序,其中'ExternalName'是'isDefault'。因此,对于示例XML和第一次排序尝试,我希望按照“Blah2”和“Blah1”的顺序进行迭代。我尝试了许多变体,甚至尝试了仅根据元素值进行排序,但似乎无法实现任何排序。任何帮助都将不胜感激

XML:


1.
胡说八道
衣服
2.
废话
衣服
排序尝试:

<xsl:sort select="./Attributes/Attribute[@ExternalName = 'isDefault']/@TextValue" order="descending"/>
<xsl:sort select="/ProductsExport/ProductExport/@ProductCode"/>
<xsl:sort select="@ProductCode"/>
<xsl:sort select="./ProductsExport/ProductExport/@ProductCode"/>

您的XPath正在尝试作为属性
@ProductCode
访问
ProductCode
。。。这是一个元素

<xsl:template  match="/">
  <ProductsExport>
  <xsl:for-each select="ProductsExport/ProductExport">
    <xsl:sort select="./Attributes/Attribute[@ExternalName = 'isDefault']/@TextValue" 
              order="descending"/>
    <xsl:sort select="./ProductCode"/>
    <xsl:copy-of select="."/>
  </xsl:for-each>
  </ProductsExport>
</xsl:template>

。。。示例输入

<ProductsExport>
  <ProductExport>
    <ProductCode>BlahD</ProductCode>
    <Attributes>
      <Attribute TextValue="Yes" ExternalName="isDefault" LocaleID="Default"/>
    </Attributes>
  </ProductExport>
  <ProductExport>
    <ProductCode>BlahC</ProductCode>
    <Attributes>
      <Attribute TextValue="No" ExternalName="isDefault" LocaleID="Default"/>
    </Attributes>
  </ProductExport>
  <ProductExport>
    <ProductCode>BlahB</ProductCode>
    <Attributes>
      <Attribute TextValue="Yes" ExternalName="isDefault" LocaleID="Default"/>
    </Attributes>
  </ProductExport>
  <ProductExport>
    <ProductCode>BlahA</ProductCode>
    <Attributes>
      <Attribute TextValue="No" ExternalName="isDefault" LocaleID="Default"/>
    </Attributes>
  </ProductExport>
</ProductsExport>

乏味的
布拉克
布拉赫
布拉哈
。。。示例输出

<ProductsExport>
  <ProductExport>
    <ProductCode>BlahB</ProductCode>
    <Attributes>
      <Attribute TextValue="Yes" ExternalName="isDefault" LocaleID="Default" />
    </Attributes>
  </ProductExport>
  <ProductExport>
    <ProductCode>BlahD</ProductCode>
    <Attributes>
      <Attribute TextValue="Yes" ExternalName="isDefault" LocaleID="Default" />
    </Attributes>
  </ProductExport>
  <ProductExport>
    <ProductCode>BlahA</ProductCode>
    <Attributes>
      <Attribute TextValue="No" ExternalName="isDefault" LocaleID="Default" />
    </Attributes>
  </ProductExport>
  <ProductExport>
    <ProductCode>BlahC</ProductCode>
    <Attributes>
      <Attribute TextValue="No" ExternalName="isDefault" LocaleID="Default" />
    </Attributes>
  </ProductExport>
</ProductsExport>

布拉赫
乏味的
布拉哈
布拉克

模板的其余部分在哪里?我很抱歉延迟接受。我被牵扯到其他事情上了。所以看起来我尝试的排序是正确的,但是完整XSL中的某些东西导致它意外地运行,我们将在接下来的几天中看到这一点。感谢您提供输入/输出示例的完整答案。
<ProductsExport>
  <ProductExport>
    <ProductCode>BlahB</ProductCode>
    <Attributes>
      <Attribute TextValue="Yes" ExternalName="isDefault" LocaleID="Default" />
    </Attributes>
  </ProductExport>
  <ProductExport>
    <ProductCode>BlahD</ProductCode>
    <Attributes>
      <Attribute TextValue="Yes" ExternalName="isDefault" LocaleID="Default" />
    </Attributes>
  </ProductExport>
  <ProductExport>
    <ProductCode>BlahA</ProductCode>
    <Attributes>
      <Attribute TextValue="No" ExternalName="isDefault" LocaleID="Default" />
    </Attributes>
  </ProductExport>
  <ProductExport>
    <ProductCode>BlahC</ProductCode>
    <Attributes>
      <Attribute TextValue="No" ExternalName="isDefault" LocaleID="Default" />
    </Attributes>
  </ProductExport>
</ProductsExport>