Html 用于删除返回的XML中不需要的元素的XLST查询
我有一个修改后的XSLT查询,它返回我想要的所有内容,但有一个额外的元素,我不想返回。我如何修改它,使其摆脱Html 用于删除返回的XML中不需要的元素的XLST查询,html,xml,xslt,scripting,Html,Xml,Xslt,Scripting,我有一个修改后的XSLT查询,它返回我想要的所有内容,但有一个额外的元素,我不想返回。我如何修改它,使其摆脱80df0b42de8f31ac4cb7a30d325ff0c1行。xml是: <?xml version="1.0" encoding="UTF-8"?> <CMDBTopology> <Objects> <CMDBSet> <name>80df0b42de8f31ac4cb7a30d325ff0c1</name&
80df0b42de8f31ac4cb7a30d325ff0c1
行。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>
80df0b42de8f31ac4cb7a30d325ff0c1
80df0b42de8f31ac4cb7a30d325ff0c1
新界
Pharmasm-s3004
我现在的xlst查询是`
<html>
<head>
<title> title </title>
</head>
<body>
<xsl:apply-templates />
</body>
</html>
标题
`很难给出准确的答案,因为不知道您希望输出是什么样子,但您的主要问题是XSLT中有一个与
CMDBRelation
匹配的模板,就像这样
<xsl:template match="CMDBRelation" >
对于每个语句,在xsl:for中,您似乎还引用了to
和From
元素,与前面一样,这些元素在XML中不存在
<xsl:for-each select="To/CMDBObject/Properties">
您发布的XSLT与XML片段不兼容。它不会输出任何内容(它所选择的元素不存在于XML文件中或调用它们的上下文中)。编辑问题并包含您正在使用的实际文件。我已对其进行编辑以反映xml文件,但如果我将其更改为正确的“值选择”它不会运行,它会给出一个空结果,但是如果我像以前一样运行它,它会给出正确的数据,但是使用了我想要删除的额外元素……XSLT中有一个匹配CMDBRelation
的模板,但是XML中不存在这样的元素,因此该模板将永远不会被使用。如果您还显示了当前获得的输出以及实际需要的输出,那么它实际上可能会更有帮助。谢谢。我尝试将CMDBRelation更改为CMDBObject,它给出了相同的输出…我将编辑问题以添加我想要的输出和我得到的内容..它完全省略了表格格式…非常感谢它去掉了标识符元素,现在我只需要稍微旋转一下它,因为它现在只显示根类和显示标签。但是,这给了我一个很好的起点。还有一个问题,我现在只想为每个选定语句的值显示一次标题。如何实现这一点。请不要在回答和接受问题后编辑这些问题,因为这会使其他人很难理解正在发生的事情。如果你把你的问题编辑成以前的问题,然后问一个全新的问题,那会更好。谢谢。好的,我会把它编辑成原来的问题,没有考虑到其他人将来可能会有类似的问题
<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>
<xsl:template match="CMDBRelation" >
<xsl:template match="CMDBRelation" >
<xsl:for-each select="To/CMDBObject/Properties">
<xsl:for-each select="CMDBObject/Properties">
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<head>
<title> title </title>
</head>
<body>
<xsl:apply-templates/>
</body>
</html>
</xsl:template>
<xsl:template match="CMDBSet">
<table width="1" border="1">
<xsl:for-each select="CMDBObject/Properties">
<tr>
<td><xsl:value-of select="display_label"/></td>
<td><xsl:value-of select="root_class"/></td>
<td><xsl:value-of select="host_servertype"/></td>
<td><xsl:value-of select="host_osrelease"/></td>
<td><xsl:value-of select="host_osinstall"/></td>
</tr>
</xsl:for-each>
</table>
</xsl:template>
</xsl:stylesheet>