【发布时间】:2016-07-01 19:28:58
【问题描述】:
我正在尝试检查字符串是否包含在集合中。我有一张 Excel 表格,我将其转换为 xml 文件;示例:
左侧是 Excel 工作表,右侧是转换后的工作表 (RowData.xml):
所以我有一个xml 文件,其中这些数字可能存在也可能不存在。例如,源 xml 可能如下所示:
Source.xml:
<Data>
<Number>5556781234</Number>
<Number>5556781235</Number>
<Number>5556781236</Number>
</Data>
如您所见,它可以在任何地方停止。源 xml 文件可能包含 RowData.xml 中列出的所有数字,也可能只有 1 个或多个。所以我的问题是,如何在我的 xslt 文件中检查它?
我想这样做:
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<!-- This is the Excel sheet converted to an XML file -->
<xsl:param name="sheet-uri" select="'RowData.xml'"/>
<xsl:param name="sheet-doc" select="document($sheet-uri)"/>
<xsl:template match="Data">
<xsl:for-each select="Data/Number">
<xsl:variable name="continue" select="$sheet-doc//Sheet/Row[Number = current()]/Continue"/>
<xsl:if test="">
<!-- Check the Source.xml against the RowData.xml and
see if the set contains any "No"'s in it. -->
<!-- If it does then don't do the following -->
<Data2>
<Number><xsl:value-of select="Number"/></Number>
<Timestamp>125222</Timestamp>
</Data2>
</xsl:if>
</xsl:for-each>
</xsl:template>
所以基本上,在创建<Data2> 元素之前,检查Source.xml 中的数字,看看这些数字中的任何一个对于RowData.xml 中的Continue 列的值是否为No。我不知道如何制作上面的if 声明。我知道xslt 中有一个contains() 函数;但是,我不知道如何在这里使用它。
这可能吗?如果有什么令人困惑的地方,请告诉我。提前致谢!
【问题讨论】: