2011-05-03 33 views
1

如何products.xsl,将得到的产品名称和条件与数量> 10wrirting XSL对XML数据执行某些操作

products.xml体写的xsl:

<?xml version="1.0" encoding="iso-8859-1"?> 
<products> 
    <product> 
     <name>soaps</name> 
     <quantity>10</quantity> 
     <condition>ready</condition> 
    </product> 
    <product> 
     <name>soaps</name> 
     <quantity>15</quantity> 
     <condition>ready</condition> 
    </product> 
    <product> 
     <name>soaps</name> 
     <quantity>20</quantity> 
     <condition>ready</condition> 
    </product> 
</products> 

产品的.xsl

<?xml version="1.0"?><!-- DWXMLSource="products.xml" --> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:output method="html"/> 
<xsl:template match="/"> 
<HTML> 
<HEAD> 
<TITLE> products</TITLE> 
</HEAD> 
<BODY> 

products quantity greater than 10 : <BR/> 


</BODY> 
</HTML> 
</xsl:template> 
</xsl:stylesheet> 
+1

请检查您的例子products.xml,打开/关闭标签为似乎不对。如果你使用缩进,你会更容易看到。 – 2011-05-03 05:48:48

+0

我认为你可以使用一个if-case。 – 2011-05-03 07:00:49

+0

@ Amigable如何写XSL这样做? – Chris 2011-05-03 07:02:02

回答

1

这应该工作:(如果具备良好的XML - 看到问题的评论)

<BODY> products quantity greater than 10 : <BR/> 
    <xsl:apply-templates select="//product[quantity &gt; 10]"/> 
</BODY> 

结合例如这个模板:

<xsl:template match="product"> 
    <P> 
     <xsl:value-of select="name"/> 
     <xsl:text>: </xsl:text> 
     <xsl:value-of select="condition"/> 
    </P> 
</xsl:template> 

按您的需求只是定制...

+0

正确的推式。 – 2011-05-04 00:02:07

2

这应该做的伎俩:

<xsl:for-each select="/products/product"> 
    <xsl:if test="quantity > 10"> 
    <xsl:value-of select="name" />: <xsl:value-of select="condition" /> <br/> 
    </xsl:if> 
</xsl:for-each> 
+0

感谢它正在工作 – Chris 2011-05-03 07:24:35

+0

不需要'xsl:if'指令。 – 2011-05-04 00:03:13

0

这种转变(无<xsl:for-each>没有条件指令):

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:output omit-xml-declaration="yes" indent="yes"/> 
<xsl:strip-space elements="*"/> 

<xsl:template match="product[quantity > 10]"> 
    <p> 
    Product: <xsl:value-of select="name"/> 
    contition: <xsl:value-of select="condition"/> 
    quantity: <xsl:value-of select="quantity"/> 
    </p> 
</xsl:template> 

<xsl:template match="product"/> 
</xsl:stylesheet> 

时所提供的XML文档应用:

<products> 
    <product> 
     <name>soaps</name> 
     <quantity>10</quantity> 
     <condition>ready</condition> 
    </product> 
    <product> 
     <name>soaps</name> 
     <quantity>15</quantity> 
     <condition>ready</condition> 
    </product> 
    <product> 
     <name>soaps</name> 
     <quantity>20</quantity> 
     <condition>ready</condition> 
    </product> 
</products> 

产生通缉的结果

<p> 
    Product: soaps 
    contition: ready 
    quantity: 15</p> 
<p> 
    Product: soaps 
    contition: ready 
    quantity: 20</p> 
+0

+1正确的拉风格。 – 2011-05-04 00:02:18

相关问题