XML/XSLT stylesheet/node

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

match="@*|node()"

   <source lang="xml">

File: Data.xml <chapter>

 <para>para1</para>
 <figure>
   <title>title 1</title>
   <graphic fileref="pic1.jpg" />
 </figure>
 <para>para2</para>
 <sect1>
   <para>para3</para>
   <figure>
     <title>"He Lights"</title>
     <graphic fileref="pic2.jpg" />
   </figure>
   <para>line 1</para>
   <sect2>
     <para>line 2</para>
     <figure>
       <title>title 2</title>
       <graphic fileref="pic1.jpg" />
     </figure>
   </sect2>
 </sect1>

</chapter>

File: Transform.xslt <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"

 version="1.0">
 <xsl:output method="xml" omit-xml-declaration="yes" />
 <xsl:template match="chapter | sect1 | sect2">
   <xsl:copy>
     <xsl:attribute name="uid">
       <xsl:value-of select="generate-id(.)" />
     </xsl:attribute>
     <xsl:apply-templates select="@*|node()" />
   </xsl:copy>
 </xsl:template>
 <xsl:template match="@*|node()">
   <xsl:copy>
     <xsl:apply-templates select="@*|node()" />
   </xsl:copy>
 </xsl:template>

</xsl:stylesheet> Output: <chapter uid="d2e1">

 <para>para1</para>
 <figure>
   <title>title 1</title>
   <graphic fileref="pic1.jpg"/>
 </figure>
 <para>para2</para>
 <sect1 uid="d2e17">
   <para>para3</para>
   <figure>
     <title>"He Lights"</title>
     <graphic fileref="pic2.jpg"/>
   </figure>
   <para>line 1</para>
   <sect2 uid="d2e33">
     <para>line 2</para>
     <figure>
       <title>title 2</title>
       <graphic fileref="pic1.jpg"/>
     </figure>
   </sect2>
 </sect1>

</chapter>

</source>
   
  


node function: node()|@*

   <source lang="xml">

File: Data.xml <?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type="text/xsl" href="Transform.xslt" ?> <html>

 <head>
 <title>A simple HTML page</title>
 </head>

<body>

Venus

 description
  • Diameter 12104 km (7505 miles)
  • Moons: 0
  • Mean temperature: 482C (900F)
  • Length of one day: 243.01 earth days
  • Length of one year: 224.7 earth days
  </body>

</html> 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:output method="html" version="4.0" indent="yes"/>
 <xsl:template match="node()|@*">
   <xsl:copy>
     <xsl:apply-templates select="node()|@*"/>
   </xsl:copy>
 </xsl:template>
 <xsl:template match="body">
   <body>
     <xsl:apply-templates/>

     comments
   </body>
 </xsl:template>

</xsl:stylesheet> Output: <?xml-stylesheet type="text/xsl" href="Transform.xslt" ><html>

  <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
     
     <title>A simple HTML page</title>
     </head>
  
  <body>

Venus

     description
     
  • Diameter 12104 km (7505 miles)
  • Moons: 0
  • Mean temperature: 482C (900F)
  • Length of one day: 243.01 earth days
  • Length of one year: 224.7 earth days

     comments
     
  </body>
  

</html>

</source>