我找不到运气的答案.我确定我忽略了某个地方的答案.但是,我试图打印/显示xml值的子集作为逗号分隔列表.这是我想要做的一个例子; XML Doc. vehicle car new="y" yr2012/yr makeFord/make modelMustang
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().