我找不到运气的答案.我确定我忽略了某个地方的答案.但是,我试图打印/显示xml值的子集作为逗号分隔列表.这是我想要做的一个例子;
XML Doc.
<vehicle> <car new="y"> <yr>2012</yr> <make>Ford</make> <model>Mustang</model> <color>Blue</color> </car> <car new="y"> <yr>2012</yr> <make>Chevy</make> <model>Camaro</model> <color>Red</color> </car> <car new="y"> <yr>2012</yr> <make>Subaru</make> <model>Impreza</model> <color>White</color> </car> <car new="n"> <yr>2000</yr> <make>Toyota</make> <model>Tacoma</model> <color>Silver</color> </car> <car new="n"> <yr>1998</yr> <make>Dodge</make> <model>Durango</model> <color>Green</color> </car> </vehicle>
XSL DOC ..
<?xml version="1.0"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="html"/> <xsl:template match="/" > <html> <head> <link rel="stylesheet" type="text/css" href="styles2.css" /> </head> <body> <h2> New Cars </h2> <p> <xsl:for-each select="vehicle/car"> <xsl:sort select="./yr" data-type="text" order="ascending" /> <xsl:if test="./@new='y'"> <xsl:value-of select="yr" /> <xsl:text> </xsl:text> <xsl:value-of select="make" /> <xsl:text> - </xsl:text> <xsl:value-of select="model" /> </xsl:if> </xsl:for-each> </p> </body> </html> </xsl:template> </xsl:stylesheet>
因此,在此示例中,我想选择所有“新”汽车并将它们放在逗号分隔列表中,并且在列表中的最后一项之后没有逗号.
我不能使用xsl:if test =“position()!= last()>因为”last“”new“汽车的位置可能不是xml中的”last“位置.我更喜欢这个在xml版本1.0中完成.
任何建议或想法?提前致谢!
示例输出:
2012 Ford Mustang,2012 Chevy Camaro,2012 Subaru Impreza
解决方法
使用
<xsl:for-each select="vehicle/car[@new='y']">
而不是全部使用if测试.然后你可以使用last().
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。