Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/28.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和XSLT-参数值不在XML中_Xml_Xslt_Param - Fatal编程技术网

XML和XSLT-参数值不在XML中

XML和XSLT-参数值不在XML中,xml,xslt,param,Xml,Xslt,Param,我有一个XML文件,其中包含多个记录和不同的值(比如一个包含名称、数字、重量等值的项目列表)。我使用XSLT在网页上以表格的形式显示这些内容。在每个页面上都会显示不同的记录—xslt从网页中获取参数值,然后只显示适当的信息片段。例如,有一个关于项目XYZ的网页-只显示该特定项目的名称、编号和重量 我的问题是,当XML中没有此类项时,是否有方法显示某种消息(如“此项没有可用数据”)。参数不是空的或空的-它仍然是从网页中获取的。只是XML文件中没有这样的记录 需要帮忙吗 您可以在下面找到XML和XL

我有一个XML文件,其中包含多个记录和不同的值(比如一个包含名称、数字、重量等值的项目列表)。我使用XSLT在网页上以表格的形式显示这些内容。在每个页面上都会显示不同的记录—xslt从网页中获取参数值,然后只显示适当的信息片段。例如,有一个关于项目XYZ的网页-只显示该特定项目的名称、编号和重量

我的问题是,当XML中没有此类项时,是否有方法显示某种消息(如“此项没有可用数据”)。参数不是空的或空的-它仍然是从网页中获取的。只是XML文件中没有这样的记录

需要帮忙吗

您可以在下面找到XML和XLS文件的代码。我已经更改了参数/变量的名称和值,但其他所有内容都与原始文件中的内容相同

XML:


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>