Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.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
Xml 如何删除属性在XSLT中具有特定值的元素_Xml_Xslt - Fatal编程技术网

Xml 如何删除属性在XSLT中具有特定值的元素

Xml 如何删除属性在XSLT中具有特定值的元素,xml,xslt,Xml,Xslt,我有一个如下所示的XML,我想删除元素,其中Name和Class属性是选择一个 如何在XSLT中实现这一点 <Students> <Student Name="&lt;Choose One&gt;" Class="&lt;Choose One&gt;" /> <Students> 这是我的示例XML: <?xml version='1.0' encoding='utf-8'?> <Classes&

我有一个如下所示的XML,我想删除
元素,其中
Name
Class
属性是
选择一个

如何在XSLT中实现这一点

<Students>
    <Student Name="&lt;Choose One&gt;" Class="&lt;Choose One&gt;" />
<Students>

这是我的示例XML:

<?xml version='1.0' encoding='utf-8'?>
<Classes>         
    <Class Name="Class A">
        <UniqueSourceIdentifier>1345</UniqueSourceIdentifier>
        <Students>
            <Student Name="Test1" Units="Unit A" />
            <Student Name="&lt;Choose One&gt;" Units="&lt;Choose One&gt;" />
            <Student Name="&lt;Choose One&gt;" Units="&lt;Choose One&gt;" />
            <Student Name="&lt;Choose One&gt;" Units="&lt;Choose One&gt;" />
        </Students>  <!-- Added by edit -->
    </Class>         <!-- Added by edit -->
</Classes>           <!-- Added by edit -->

1345
要删除具有给定属性的所有
元素,可以使用以下空模板:

<xsl:template match="Student[contains(@Name,'&lt;Choose One&gt;') and contains(@Units,'&lt;Choose One&gt;')]" />

要复制所有其他元素,可以使用标识模板



谢谢您的回答,但是提供的解决方案不起作用。到底什么似乎不起作用?你必须使用某种
应用模板
,比如身份模板来匹配空模板。我更新了我的答案。错误是您在问题中命名了一个属性
Class
,而不是
Units
。现在它应该可以按预期工作了。我还将身份模板添加到了答案中。请编辑您的问题,将
Class
更改为
Units
。否则,答案将与您的问题不匹配。@FaisalShah-如果有帮助,下面是一个工作示例,显示此答案的工作原理:
<!-- identity template  -->
<xsl:template match="node()|@*">
  <xsl:copy>
    <xsl:apply-templates select="node()|@*" />
  </xsl:copy>
</xsl:template>