XML和XSLT-参数值不在XML中
我有一个XML文件,其中包含多个记录和不同的值(比如一个包含名称、数字、重量等值的项目列表)。我使用XSLT在网页上以表格的形式显示这些内容。在每个页面上都会显示不同的记录—xslt从网页中获取参数值,然后只显示适当的信息片段。例如,有一个关于项目XYZ的网页-只显示该特定项目的名称、编号和重量 我的问题是,当XML中没有此类项时,是否有方法显示某种消息(如“此项没有可用数据”)。参数不是空的或空的-它仍然是从网页中获取的。只是XML文件中没有这样的记录 需要帮忙吗 您可以在下面找到XML和XLS文件的代码。我已经更改了参数/变量的名称和值,但其他所有内容都与原始文件中的内容相同 XML:XML和XSLT-参数值不在XML中,xml,xslt,param,Xml,Xslt,Param,我有一个XML文件,其中包含多个记录和不同的值(比如一个包含名称、数字、重量等值的项目列表)。我使用XSLT在网页上以表格的形式显示这些内容。在每个页面上都会显示不同的记录—xslt从网页中获取参数值,然后只显示适当的信息片段。例如,有一个关于项目XYZ的网页-只显示该特定项目的名称、编号和重量 我的问题是,当XML中没有此类项时,是否有方法显示某种消息(如“此项没有可用数据”)。参数不是空的或空的-它仍然是从网页中获取的。只是XML文件中没有这样的记录 需要帮忙吗 您可以在下面找到XML和XL
001
aaaa
2402
2200
002
bbbb
2402
2700
003
中交
2402
2003
004
dddd
2402
2024
XSL:
XXXX
table.YYY{border collapse:collapse;}table.YYY td,table.YYY th{border:1px纯黑色;padding:1em;垂直对齐:中间;文本对齐:中间;}table.YYY th{background color:#eee;}table.YYY.页眉{字体大小:2em;字体重量:粗体;底部填充:1em;顶部填充:1em;}table.YYY.itemname{color:red;font-weight:bold;空格:nowrap;}table.YYY.yellow{background color:yellow;}table.YYY.red{background color:red;}table.YYY.green{background color:#40FF00;}
名称
价格1
价格2
此项目无数据
除了
<xsl:template match="/ItemsTable/ItemRow [ item = $thisitem ]">
除了
<xsl:template match="/ItemsTable/ItemRow [ item = $thisitem ]">
您能展示一下您目前使用的XSLT以及作为输入的XML类型的示例吗?当然。我已经更改了参数/变量的名称和值,但XML和XSL的构建方式与下面的完全相同。我知道-抱歉,意外按下了“enter”。现在在问题描述中,因为它太长了,无法发表评论。您能展示您目前使用的XSLT以及作为输入的XML类型的示例吗?当然。我已经更改了参数/变量的名称和值,但XML和XSL的构建方式与下面的完全相同。我知道-抱歉,意外按下了“enter”。由于太长,无法发表评论,因此现在在问题描述中。谢谢!像符咒一样有效:)谢谢!像符咒一样有效:)
<xsl:template match="/ItemsTable/ItemRow [ item = $thisitem ]">
<xsl:template match="/ItemsTable">
<xsl:variable name="matchingRows" select="ItemRow[item = $thisitem][string-length(name)][string-length(price)][string-length(price2)]"/>
<xsl:choose>
<xsl:when test="$matchingRows">
<xsl:apply-templates select="$matchingRows"/>
</xsl:when>
<xsl:otherwise>
<div>
<p>No data for this item</p>
</div>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template match="ItemRow">
<!-- logic for each matching row here, don't need to check the
preconditions as the template is only called for rows that match -->
</xsl:template>