XML Tutorial/XSLT stylesheet/starts with

Материал из Web эксперт
Версия от 11:26, 26 мая 2010; Admin (обсуждение | вклад) (1 версия)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

for-each select=addressbook/address[starts-with(state, M)]

   <source lang="xml">

File: Data.xml <?xml version="1.0"?> <addressbook>

 <address>
   <name>
     <title>Mr.</title>
     <first-name>Jack</first-name>
     <last-name>Smith</last-name>
   </name>
   <street>1234 Main Street</street>
   <city>New York</city>
   <state>WI</state>
   <zip>48392</zip>
 </address>

</addressbook>

File: Transform.xslt <?xml version="1.0"?> <xsl:stylesheet version="1.0"

 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output method="text" indent="no"/>
 <xsl:strip-space elements="*"/>
 <xsl:template match="/">
   <xsl:for-each select="addressbook/address[starts-with(state, "M")]">
     <xsl:sort select="name/last-name"/>
     <xsl:sort select="name/first-name"/>
     <xsl:if test="name/title">
       <xsl:value-of select="name/title"/>
       <xsl:text> </xsl:text>
     </xsl:if>
     <xsl:value-of select="name/first-name"/>
     <xsl:text> </xsl:text>
     <xsl:value-of select="name/last-name"/>
     <xsl:text>
</xsl:text>
     <xsl:value-of select="street"/>
     <xsl:text>
</xsl:text>
     <xsl:value-of select="city"/>
     <xsl:text>, </xsl:text>
     <xsl:value-of select="state"/>
     <xsl:text>  </xsl:text>
     <xsl:value-of select="zip"/>
     <xsl:text>
</xsl:text>
     <xsl:text>
</xsl:text>
   </xsl:for-each>
 </xsl:template>

</xsl:stylesheet></source>


select element starting with K

   <source lang="xml">

File: Data.xml <?xml version="1.0" encoding="US-ASCII"?> <state name="New York">

<county>Abc</county>
<county>Kent</county>
<county>Newport</county>
<county>World</county>
<county>Washington</county>

</state>

File: Transform.xslt <?xml version="1.0" encoding="US-ASCII"?> <xsl:stylesheet version="1.0"

 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output method="xml" indent="yes" />
 <xsl:template match="/">
   <county state="{state/@name}">
     <xsl:apply-templates select="state" />
   </county>
 </xsl:template>
 <xsl:template match="state">
   <xsl:apply-templates select="county" />
 </xsl:template>
 <xsl:template match="state">
   <xsl:apply-templates select="county[starts-with(.,"K")]" />
 </xsl:template>
 <xsl:template match="county">
   <name>
     <xsl:apply-templates />
   </name>
 </xsl:template>

</xsl:stylesheet> Output: <?xml version="1.0" encoding="UTF-8"?> <county state="New York">

  <name>Kent</name>

</county></source>


starts-with function

   <source lang="xml">

File: Data.xml <?xml version = "1.0"?> <stocks>

  <stock symbol = "INTC">
     <name>Intel Corporation</name>
  </stock>
  <stock symbol = "CSCO">
     <name>Cisco Systems, Inc.</name>
  </stock>

</stocks>

File: Transform.xslt <?xml version = "1.0"?> <xsl:stylesheet version="1.0"

 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:template match="/stocks">
   <html>
     <body>
    <xsl:for-each select="stock"> <xsl:if test="starts-with(@symbol, "C")">
  • <xsl:value-of select="concat(@symbol," - ", name)" />
  •            </xsl:if>
             </xsl:for-each>
    
     </body>
   </html>
 </xsl:template>

</xsl:stylesheet> Output: <html>

  <body>
  • CSCO - Cisco Systems, Inc.
  </body>

</html></source>


starts-with() returns true if the first argument string starts with the second argument string

   <source lang="xml">

File: Data.xml <?xml version="1.0" encoding="utf-8"?>

 <text>Welcome to XSL world.</text>
 <string>Welcome</string>
 <string>XSL</string>
 <string>XML</string>

File: Transform.xslt <?xml version="1.0" encoding="utf-8"?> <xsl:stylesheet

     version="1.0"
     xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
   <xsl:template match="/">
<xsl:for-each select="//string"> <TR> <TD> <xsl:value-of select="."/> </TD> <TD> <xsl:value-of select="starts-with(//text,.)"/> </TD> <TD> <xsl:value-of select="contains(//text,.)"/> </TD> </TR> </xsl:for-each> </TABLE> </xsl:template> </xsl:stylesheet> Output: <?xml version="1.0" encoding="UTF-8"?>
           <xsl:value-of select="//text"/>
string</TH>
         <td>starts-with</TH>
         <td>contains</TH>
<TR><TD>Welcome</TD><TD>true</TD><TD>true</TD></TR><TR><TD>XSL</TD><TD>false</TD><TD>true</TD></TR><TR><TD>XML</TD><TD>false</TD><TD>false</TD></TR></TABLE></source>
Welcome to XSL world.
string</TH><td>starts-with</TH><td>contains</TH>