使用match筛选XML文件,并以
我有一个XML文件,它包含大约1000个用户,并且具有以下结构:使用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 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并获得我需要的输出:啊,我明白了。您只是在寻找转换的输出。是的,有相当多的在线解析器可以做到这一点