Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.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
使用xsl在xml元素的数据段内匹配表达式 我通常是用C++编程的,所以XML/XSL/XPath不是我的强项,但是我需要做一个转换,我似乎找不到一个好的方法来做。_Xml_Xpath_Xslt_Transform_Match - Fatal编程技术网

使用xsl在xml元素的数据段内匹配表达式 我通常是用C++编程的,所以XML/XSL/XPath不是我的强项,但是我需要做一个转换,我似乎找不到一个好的方法来做。

使用xsl在xml元素的数据段内匹配表达式 我通常是用C++编程的,所以XML/XSL/XPath不是我的强项,但是我需要做一个转换,我似乎找不到一个好的方法来做。,xml,xpath,xslt,transform,match,Xml,Xpath,Xslt,Transform,Match,我们有一个xml文件,其格式如下: <outer> <element/> <other_element/> <message pri="info"> [[!CDATA Error: something is not working]] </message> <message pri="info"> [[!CDATA Warning: warnings are boring]] &l

我们有一个xml文件,其格式如下:

<outer>
  <element/>
  <other_element/>
  <message pri="info">
    [[!CDATA Error: something is not working]] 
  </message>
  <message pri="info">
    [[!CDATA Warning: warnings are boring]] 
  </message>
</outer>

[[!CDATA错误:某些东西不工作]]
[[!CDATA警告:警告很无聊]]
我需要一个xsl,可以将其转换为完全相同的xml文件,唯一的例外是它匹配“Error:”部分,并将pri属性更改为“Error”

我需要使用xsl转换来实现这一点,我已经开始研究XPATH,但我很难找到如何实现这一点

我甚至把这些信息和一个

<xsl:template match="message">
  <xsl:choice>
    <xsl:when test="tricky part">
    </xsl:when>
    <xsl:otherwise>
      <xsl:justcopythetag>
    </xsl:otherwise>
  </xsl:choice>
</xsl:template>

我已经找到了如何复制其他消息标记,但我不知道如何匹配“错误”部分


有人能帮我吗?

您只是在寻找字符串“Error:”对吗



如果第一个参数包含第二个参数,
contains()
将返回true。

您只是在查找字符串“Error:”对吗

...
<xsl:when test="contains(., 'Error')">
    <message pri="error"><xsl:value-of select="."/></message>
</xsl:when>
...otherwise

如果第一个参数包含第二个参数,
contains()
将返回true。

。。。
...
<xsl:when test="contains(., 'Error')">
    <message pri="error"><xsl:value-of select="."/></message>
</xsl:when>
...otherwise
…否则
。。。
…否则

text()是否会引用匹配的节点?我懂了。谢谢
text()
专门指节点的字符串内容。在大多数情况下,这不是必需的,但我个人发现,在
上使用
text()
一眼就可以更清楚、更容易理解。那么text()将引用匹配的节点?我懂了。谢谢
text()
专门指节点的字符串内容。在大多数情况下,这不是必需的,但我个人认为使用
text()
而不是
,一目了然,更容易理解。这很好。这看起来是我问题的完整解决方案。糟糕的是,我无法分割我的答案…一个问题,这不是真的在已经匹配的标记中放置了一个标记吗?匹配的标记不会自动转换为生成的XML/HTML/任何文档。您必须明确说明要发布的内容(在本例中是原始消息还是修改后的消息)。我理解,但当说select=“”时,不包括匹配的内容吗?只包括开始和结束标记之间的“内部”部分。这很好。这看起来是我问题的完整解决方案。糟糕的是,我无法分割我的答案…一个问题,这不是真的在已经匹配的标记中放置了一个标记吗?匹配的标记不会自动转换为生成的XML/HTML/任何文档。您必须明确说明要发布的内容(在本例中为原始消息或修改后的消息)。我理解,但当说select=“”时,不包括匹配的内容吗?只是开始和结束标记之间的“内部”部分。