Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.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
使用match筛选XML文件,并以_Xml_Xslt_Match_Startswith - Fatal编程技术网

使用match筛选XML文件,并以

使用match筛选XML文件,并以,xml,xslt,match,startswith,Xml,Xslt,Match,Startswith,我有一个XML文件,它包含大约1000个用户,并且具有以下结构: <?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="filter.xsl"?> <USERS> <USER> <ID>15492</ID> <USERNAME>0047</USERNAME> <ADDRESS>

我有一个XML文件,它包含大约1000个用户,并且具有以下结构:

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="filter.xsl"?>
  <USERS>
    <USER>
      <ID>15492</ID>
      <USERNAME>0047</USERNAME>
      <ADDRESS>
        <FIRSTNAME>mr</FIRSTNAME>
        <LASTNAME>Dees</LASTNAME>
        <ORGANIZATION>WON Organization Name </ORGANIZATION>
        <EMAIL>email@address.com</EMAIL>
      </ADDRESS>
      <COMMERCEINFO>
        <PAYMENTMETHOD>MANUAL</PAYMENTMETHOD>
      </COMMERCEINFO>
      <ACCOUNT>
        <PASSWORD>72d7df914cc8806b2eb0fa0203f322d7</PASSWORD>
        <EXPIRES>1601-01-01</EXPIRES>
      </ACCOUNT>
       .
       .
       .
    </USER>
    <USER>
    ...
    </USER>
  </USERS>

15492
0047
先生
迪斯
赢得组织名称
email@address.com
手册
72d7df914cc8806b2eb0fa0203f322d7
1601-01-01
.
.
.
...
我只需要查看
元素以“WON”开头的用户。使用IE8打开XML文件,连接的XSL文件如下所示:

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
    <xsl:output indent="yes" />

    <xsl:template match="@*|node()">
        <xsl:copy>
            <xsl:apply-templates select="@*|node()"/>
        </xsl:copy>
    </xsl:template>

    <xsl:template match="USER[ADDRESS[ORGANIZATION[starts-with(.,'WON')]]]" />  
</xsl:stylesheet>


但是,使用这一点,我在IE8的页面源代码中看到的结果告诉所有用户,过滤器似乎不起作用。

我对XSLT做了一个小小的调整:

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output indent="yes" />
    <xsl:template match="/">
        <users>
            <xsl:apply-templates select="USERS/USER[ADDRESS[ORGANIZATION[starts-with(.,'WON')]]]"/>
        </users>
    </xsl:template>
    <xsl:template match="USER">
        <xsl:copy-of select="."/>
    </xsl:template>
</xsl:stylesheet>

这导致只有
节点的组织以“赢”开头

但是,这不会更新源本身。现在的设置方式是让浏览器使用提供的XSLT解析XML

如果您希望源代码已经被转换,您必须使用服务器端语言,如PHP、Java、ASP.Net等。这些语言可以为您进行XML/XSLT转换,并将生成的HTML输出为网页的源代码。

谢谢,这在IE8中至少提供了正确的视图,但是。。。我希望页面源代码也只显示过滤的项目。有没有办法做到这一点?不使用任何服务器端代码,如PHP、Java、ASP.NET等。这些语言可以解析XML/XSLT转换,并仅在浏览器中显示输出。感谢您的快速回复!我找到了一个很好的在线工具来解析XML并获得我需要的输出:啊,我明白了。您只是在寻找转换的输出。是的,有相当多的在线解析器可以做到这一点