我有以下XML(部分)文档:
<export>
<table name="CLIENT">
<row>
<col name="CODE_CLIENT" type="System.String">1000010026</col>
<col name="LIBELLE" type="System.String">Test|</col>
<col name="PROSPECT" type="System.Decimal">1</col>
</row>
<row>
<col name="CODE_CLIENT" type="System.String">1000010025</col>
<col name="LIBELLE" type="System.String">Rue de la 2eme ad|</col>
<col name="PROSPECT" type="System.Decimal">0</col>
</row>
<row>
<col name="CODE_CLIENT" type="System.String">1000010125</col>
<col name="LIBELLE" type="System.String">Test4</col>
<col name="PROSPECT" type="System.Decimal">0</col>
</row>
<row>
<col name="CODE_CLIENT" type="System.String">1000010035</col>
<col name="LIBELLE" type="System.String">Rue</col>
<col name="PROSPECT" type="System.Decimal">1</col>
</row>
</table></export>
以及以下XSL:
<xsl:stylesheet version="1.1" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text" indent="yes"/>
<xsl:template match="/">
<xsl:apply-templates select="export/table[@name='CLIENT']"/>
</xsl:template>
<xsl:template match="row">
SOME TEMPLATE CODE
</xsl:template>
</xsl:stylesheet>
我想将第一个模板(match =“/”)仅应用于前景值为1的“行”。在我的例子中,只会转换第一行和最后一行。
我试过
<xsl:apply-templates select="export/table[@name='CLIENT']/row[col[@name='PROSPECT']=1]"/>
但这给了我一个语法错误。
任何人都知道如何继续?
答案 0 :(得分:2)
我的建议:
<xsl:stylesheet
version="1.1"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
>
<xsl:output method="text" indent="yes"/>
<xsl:template match="/">
<xsl:apply-templates select="export/table[@name='CLIENT']"/>
</xsl:template>
<xsl:template match="table">
<xsl:apply-templates select="row[col[@name='PROSPECT' and text() = '1']]" />
</xsl:template>
<xsl:template match="row">
SOME TEMPLATE CODE
</xsl:template>
</xsl:stylesheet>
虽然你的尝试:
<xsl:apply-templates select="
export/table[@name='CLIENT']/row[col[@name='PROSPECT']=1]
"/>
也应该工作(它不是那么明显,但它没有错误本身)。不知道为什么它不适合你。
答案 1 :(得分:0)
小心:未经测试。它甚至可能无法正确解析。
<xsl:template match="row[string(./col[@name='PROSPECT']) = '1']">
</xsl:template>
答案 2 :(得分:0)
我尝试了你的apply-templates,但没有失败。你确定错误在apply-templates中吗?
答案 3 :(得分:0)
<xsl:apply-templates select="export/table[@name='CLIENT']/row/col[text()='1' and @name='PROSPECT']"/>