joy*_*oy 6 xml unix xslt bash shell
我有一个 xml 文件 (test.xml),如下所示:
<hudson>
<job>
<name>cedge</name>
</job>
<job>
<name>techM</name>
</job>
<job>
<name>infy</name>
</job>
<job>
<name>DevP</name>
<job>
<name>line</name>
<nextBuildNumber>14</nextBuildNumber>
</job>
<job>
<name>ment</name>
<nextBuildNumber>85</nextBuildNumber>
</job>
<job>
<name>FreeS</name>
<nextBuildNumber>96</nextBuildNumber>
</job>
<job>
<name>test</name>
</job>
</job>
<job>
<name>Email</name>
</job>
<job>
<name>investigate</name>
<nextBuildNumber>26</nextBuildNumber>
</job>
<job>
<name>Java</name>
</job>
<job>
<name>Tools</name>
</job>
</hudson>
Run Code Online (Sandbox Code Playgroud)
需要输出文件,例如:
"line" "14"
"ment" "85"
"FreeS" "96"
"investigate" "26"
Run Code Online (Sandbox Code Playgroud)
尝试使用以下方法
xsltproc x.xslt test.xml
Run Code Online (Sandbox Code Playgroud)
使 x.xslt 像这样:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="//job">
"<xsl:value-of select="name"/>" = "<xsl:value-of select="nextBuildNumber"/>"
</xsl:template>
</xsl:stylesheet>
Run Code Online (Sandbox Code Playgroud)
只得到
"investigate" = "26"
Run Code Online (Sandbox Code Playgroud)
以及空白值。如果没有从“job-Devp”标签获取数据,我们将不胜感激。
您的 XSLT 并不能完全产生您所说的输出,因为它还会输出job直接位于 root 下的所有元素的行hudson,如下所示。
"cedge" = ""
Run Code Online (Sandbox Code Playgroud)
此外,当您匹配该job元素时,您不会通过选择这些元素的任何后代元素来继续处理,因此不会拾取job嵌套元素。job
也许最简单的事情就是简单地添加一个与文档节点匹配的模板\,并专门选择您需要的所有作业元素(即带有nextBuildNumber
试试这个 XSLT
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text" />
<xsl:template match="/">
<xsl:apply-templates select="//job[nextBuildNumber]" />
</xsl:template>
<xsl:template match="job">
<xsl:text>"</xsl:text>
<xsl:value-of select="name"/>
<xsl:text>" = "</xsl:text>
<xsl:value-of select="nextBuildNumber"/>
<xsl:text>" </xsl:text>
</xsl:template>
</xsl:stylesheet>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6961 次 |
| 最近记录: |