Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.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 XSL包含多个字符串_Xml_Xslt - Fatal编程技术网

Xml XSL包含多个字符串

Xml XSL包含多个字符串,xml,xslt,Xml,Xslt,如果节点包含某个字符串,我将尝试更改现有测试。目前,它只针对一个字符串工作,如下所示: <xsl:key name="TEST" match="Parrent[contains(./Name,'Aurora') and contains(./Status,'Ongoing')]" use="Final"/> 因此,基本上我想和以前一样,只针对更多的状态类型,而不是正在进行的状态类型。实现这种转变的最佳方式是什么?提前谢谢。那么您真的需要包含检查,还是可以比较是否相等?在后一种情况下

如果节点包含某个字符串,我将尝试更改现有测试。目前,它只针对一个字符串工作,如下所示:

<xsl:key name="TEST" match="Parrent[contains(./Name,'Aurora') and contains(./Status,'Ongoing')]" use="Final"/>

因此,基本上我想和以前一样,只针对更多的状态类型,而不是正在进行的状态类型。实现这种转变的最佳方式是什么?提前谢谢。

那么您真的需要包含检查,还是可以比较是否相等?在后一种情况下,可以将=运算符用于节点集或节点序列或值,例如XSLT 2.0

Status = ('Ongoing', 'Stopped', 'Started', 'Ready', 'NotReady')
如果您在另一个文档中的值的结构为,例如

<status-list>
  <status>Ongoing</status>
  <status>Stopped</status>
  <status>Started</status>
  ...
</status-list>

不能在的match属性中使用变量,但可以通过谓词筛选键的结果。例如,以下表达式:

key('keyname', something)[Status=exsl:node-set($status-list)/status]
将仅选择具有子状态且其值在定义为以下内容的变量中列出的节点:

<xsl:variable name="status-list">
    <status>Ongoing</status>
    <status>Stopped</status>
    <status>Started</status>
    <status>Ready</status>
    <status>NotReady</status>
</xsl:variable>
请注意,您需要声明绑定到exsl前缀的命名空间-请参阅:

1。请注明XSLT 1.0或2.0。-2.多值列表的确切格式以及接收它的方法不清楚。对不起,我应该提到这在xslT 1.0Good中应该有效。现在,每当您准备回答第二个问题时……首先,我试图在变量内的xsl文件中设置它们,但由于我不能在xsl:key内使用变量,所以出现了错误,目前我将它们放在一个外部.xml文档中,如post.xml not.xsl中所述,但我想我可以用其他方式声明它们,因为它们是固定字符串,这意味着它们不会改变。
key('keyname', something)[Status=exsl:node-set($status-list)/status]
<xsl:variable name="status-list">
    <status>Ongoing</status>
    <status>Stopped</status>
    <status>Started</status>
    <status>Ready</status>
    <status>NotReady</status>
</xsl:variable>