开发者

use xsl to transform xml string

I have a string that looks like thi开发者_运维问答s "<root><1>1</1><2>2</2></root>" How would I be able to use <xsl:for-each select="root/1">?


So, based on your comment, let me suggest this XML:

<?xml version="1.0" encoding="UTF-8"?>
<carLot>
    <car type="Ford">2011 Mustang</car>
    <car type="Honda">2010 Civic</car>
    <truck type="Ford">2007 F150</truck>
    <car type="Ford">2010 Focus</car>
    <car type="Toyota">2001 Camry</car>
</carLot>

Suppose you only want to match car elements that are of type "Ford," and then display the output as HTML. Try this:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    version="1.0"> 
    <xsl:output method="html" indent="yes"/>
    <xsl:template match="/">
        <xsl:element name="html">
            <xsl:element name="body">
                <xsl:element name="h1">My Favorite Cars</xsl:element>
                <xsl:element name="p">
                    <xsl:text>These are the Ford cars I found on the car lot:</xsl:text>
                </xsl:element>
                <xsl:element name="ul">
                    <xsl:for-each select="carLot/car[@type='Ford']">
                        <xsl:element name="li">
                            <xsl:value-of select="."/>
                        </xsl:element>
                    </xsl:for-each>
                </xsl:element>
            </xsl:element>
        </xsl:element>
    </xsl:template>
</xsl:stylesheet>

The resulting HTML (admittedly incomplete) is this:

<html>
   <body>
      <h1>My Favorite Cars</h1>
      <p>These are the Ford cars I found on the car lot:</p>
      <ul>
         <li>2011 Mustang</li>
         <li>2010 Focus</li>
      </ul>
   </body>
</html>

How's that?

(Tested with Oxygen 12 on Win 7)

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜