【发布时间】:2014-10-09 10:30:00
【问题描述】:
我有一个修改后的 XSLT 查询,它返回我想要的所有内容,但还有一个我不想要的附加元素。我怎样才能修改它,使它摆脱<identifier type="nt">80df0b42de8f31ac4cb7a30d325ff0c1</identifier> 行。 xml是:
<?xml version="1.0" encoding="UTF-8"?>
<CMDBTopology>
<Objects>
<CMDBSet>
<name>80df0b42de8f31ac4cb7a30d325ff0c1</name>
<CMDBObject>
<identifier type="nt">80df0b42de8f31ac4cb7a30d325ff0c1</identifier>
<Properties>
<root_class type="STRING">nt</root_class>
<host_servertype type="STRING"></host_servertype>
<host_osrelease type="STRING"></host_osrelease>
<display_label type="STRING">pharsm-s3004</display_label>
<host_osinstalltype type="STRING"></host_osinstalltype>
</Properties>
</CMDBObject>
我目前的 xlst 查询是 `
<html>
<head>
<title> title </title>
</head>
<body>
<xsl:apply-templates />
</body>
</html>
<table width="1" border="1" >
<tr>
<td> <xsl:value-of select="display_label" /> </td>
<td> <xsl:value-of select="root_class" /> </td>
<td> <xsl:value-of select="resolver_group" /> </td>
<td> <xsl:value-of select="supported_by" /> </td>
<td> <xsl:value-of select="environment" /> </td>
<td> <xsl:value-of select="site_code" /> </td>
<td> <xsl:value-of select="sla_classification" /> </td>
<td> <xsl:value-of select="datacenter" /> </td>
</tr>
</table>
`
【问题讨论】:
-
您发布的 XSLT 与 XML 片段不兼容。它不会输出任何东西(它选择的元素不存在于 XML 文件或调用它们的上下文中)。编辑问题并包含您正在使用的实际文件。
-
我已经编辑它以反映 xml 文件
-
但是如果我将它更改为正确的“值选择”它不会运行它会给出一个空结果但是如果我运行它之前它会给出正确的数据但是我想要的额外元素摆脱...
-
您在 XSLT 中有一个匹配
CMDBRelation的模板,但在您的 XML 中不存在这样的元素,所以这个模板永远不会被使用。如果您还显示了当前获得的输出以及您实际想要的输出,它实际上可能会更有帮助。谢谢。 -
我尝试将 CMDBRelation 更改为 CMDBObject 并且它给出了相同的输出......我将编辑问题以添加我想要的输出以及我得到的......它完全省略了表格格式...