如何使用XSLT在xml中识别/检查节点是否存在,如果存在则修改xml并打印?

时间:2016-08-24 07:28:03

标签: xml xslt xslt-2.0 xslt-grouping

这是我在xslt中使用的示例输入xml文件,如何检查文件中的特定节点,如果存在则需要打印True或false

</persons>        
      '     <?xml version="1.0" ?>
       <persons>
        <person username="JS1">
         <name>John</name>
         <family-name>Smith</family-name>
        </person>
      <person username="MI1">
      <name>Morka</name>
      <family-name>Ismincius</family-name>
       </person>
     </persons>     

以上示例xml文件我需要检查是否存在<name>节点。如果存在名称节点,则应使用XSLT在输出中打印。

<?xml version="1.0" ?>
   <persons>
  <person username="JS1">
    <name>John</name>
    <family-name>Smith</family-name>
  </person>
  <person username="MI1">
    <name>Morka</name>
    <family-name>Ismincius</family-name>
  </person>
    <person>
   **<name>True</name>**
   </person>
</persons> 

1 个答案:

答案 0 :(得分:0)

如果上下文项是<person>元素,那么

<xsl:copy-of select="name"/>

将输出name元素(如果它存在),如果它不存在则不会执行任何操作。

如果您想输出<name>true</name>当且仅当输入中至少有一个<name>元素时,您可以使用

<xsl:if test="//name">
  <name>true</name>
</xsl:if>

如果您的要求与此不同,那么您必须更清楚地解释它。