【发布时间】:2014-11-21 06:57:03
【问题描述】:
首先我使用的 XML 文件如下
**<composite code="ReceivedQty">
<element code="CODE">
<value>**00228298150-004**</value>
</element>
<element code="DATE">
<value>11-19-2014</value>
</element>
<element code="RECQTY">
<value>0</value>
</element>
<element code="NOTES">
<value>004A</value>
</element>
</composite>**
**<composite code="ReceivedQty">
<element code="CODE">
<value>**00228298150**</value>
</element>
<element code="DATE">
<value>11-19-2014_11-19-2014</value>
</element>
<element code="RECQTY">
<value>0_0</value>
</element>
<element code="NOTES">
<value>new003AAA%#$^003B</value>
</element>
</composite>**
如上面的 XML 文件所示,<element code="CODE"> 有两个值 00228298150 和 00228298150-004。
对应的XSL文件代码是
<xsl:for-each select="//table[@section='detail']/loop">
<xsl:variable name="ndcNumber">
<xsl:value-of select="segment/element[@name='Product/Service ID']/value"/>
</xsl:variable>
<xsl:variable name="lineNumber">
<xsl:value-of select="segment/element[@name='Assigned Identification']/value"/>
</xsl:variable>
<xsl:variable name="ndcLineNumber">
<xsl:value-of select="concat($ndcNumber,'-',$lineNumber)"/>
</xsl:variable>
<xsl:variable name="receivedQty">
<xsl:value-of select="/envelope/segment[@code='ACK']/composite[@code='ReceivedQty' and element[@code='CODE' and value=$**ndcLineNumber**]]/element[@code='RECQTY']/value"/>
</xsl:variable>
</<xsl:for-each>
在XSL文件中,定义变量“receivedOty”时,使用xsl选择值定义为ndcLinenumber(15位)。因此,当呈现 HTML 页面时,页面上仅显示元素 code=CODE 的值为“00228298150-004”的数据。
我想在 XSL 文件中添加一个代码,以便元素 code=CODE 的值为“00228298150”的数据也显示在 HTML 页面上。
$ndcnumber 是(11 个字符)和$ndclinenumber(15 个字符)
所以基本上,现在我只能访问和检索ndcnumber 或ndclinenumber 的一个值。我希望我的 XSL 同时从 XML 中检索这两个值。
也许通过在 if else 块中处理它。我在想我可以找出元素代码值的长度,这样我可以检查长度(值)是否>11位然后使用变量ndclinenumber,否则使用ndcnumber。
有人知道我该怎么做吗?谢谢!!
【问题讨论】:
-
我不明白你的问题。您为什么不将示例最小化为仅演示问题所必需的内容? -- 回答标题中的问题:使用
string-length()函数。 -
嗨@michael.hor257k 我确实把它最小化了,现在你的问题更清楚了吗?