使用xsl在xml元素的数据段内匹配表达式 我通常是用C++编程的,所以XML/XSL/XPath不是我的强项,但是我需要做一个转换,我似乎找不到一个好的方法来做。
我们有一个xml文件,其格式如下:使用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
<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=“”时,不包括匹配的内容吗?只是开始和结束标记之间的“内部”部分。