/[cvs]/nfo/perl/libs/XML/XUpdate/xupdate2xsl.xml
ViewVC logotype

Diff of /nfo/perl/libs/XML/XUpdate/xupdate2xsl.xml

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.1 by joko, Thu May 1 20:39:54 2003 UTC revision 1.2 by joko, Thu May 1 23:42:48 2003 UTC
# Line 21  Line 21 
21        <!-- override some builtin rules: see http://www.w3.org/TR/xslt#built-in-rule -->        <!-- override some builtin rules: see http://www.w3.org/TR/xslt#built-in-rule -->
22        <xsl:template match="comment()"><xsl:call-template name="passthru" /></xsl:template>        <xsl:template match="comment()"><xsl:call-template name="passthru" /></xsl:template>
23        
24          
25        <!-- 2. This is the translation part: XUpdate becomes XSLT -->        <!-- 2. This is the translation part: XUpdate becomes XSLT -->
26                
27        <!-- This node "encapsulates" common infrastructure. -->        <!-- lib -->
28          <!-- This node "encapsulates" common core infrastructure. -->
29        <xsl:template match="xupdate:modifications">        <xsl:template match="xupdate:modifications">
30        
31            <!-- <xsl:template name="identity_template_rule"> -->
32            <xsl:element name="xsl:template">
33              <xsl:attribute name="name">identity_template_rule</xsl:attribute>
34    
35                  <!-- An "identity template rule" - original version by Mike Kay, Software AG -->
36                  <!-- Please visit [http://p2p.wrox.com/archive/xslt/2001-06/98.asp] -->
37                  <!-- Translated to "self hosting xsl": Andreas Motl, andreas.motl@ilo.de -->
38                  <!-- FIXME: Could this be used to replace passthru-logic at 1. ? -->
39                  <xsl:element name="xsl:copy">
40                    <xsl:element name="xsl:copy-of">
41                      <xsl:attribute name="select">@*</xsl:attribute>
42                    </xsl:element>
43                    <xsl:element name="xsl:apply-templates" />
44                  </xsl:element>
45    
46            </xsl:element>
47            <!-- </xsl:template> -->
48    
49            <!-- 1. This is the passthru logic (copy all untouched nodes). -->            <!-- 1. This is the passthru logic (copy all untouched nodes). -->
50            <!-- in fact this is the xsl from above translated to be able to be generated by xsl itself! -->            <!-- in fact this is the xsl from above translated to be able to be generated by xsl itself! -->
51                <xsl:comment> 1. passthru logic </xsl:comment>                <xsl:comment> 1. passthru logic </xsl:comment>
# Line 47  Line 67 
67        
68        </xsl:template>        </xsl:template>
69        
70    
71    
72    
73    
74          <!-- code -->
75        <!-- This node "encapsulates" infrastructure for handling the directives. -->        <!-- This node "encapsulates" infrastructure for handling the directives. -->
76          <!-- FIXME: handle the other ones: append, remove, ect. -->
77        <xsl:template match="xupdate:insert-after">        <xsl:template match="xupdate:insert-after">
78            <xsl:comment> 2. context finder </xsl:comment>            <xsl:comment> 2. context finder </xsl:comment>
79            <xsl:apply-templates />            <!-- <xsl:variable name="select" select="@select">Hello World!</xsl:variable> -->
80              
81              <!-- this resembles some parts of the CRUD API - retranslated to self-hosting xsl -->
82    
83              <!-- V1 -->
84              <!-- <xsl:element name="xsl:template"> -->
85                  <!-- <xsl:attribute name="match"><xsl:value-of select="@select" /></xsl:attribute> -->
86    
87              <!-- V2 -->
88              <xsl:element name="xsl:template">
89                  <!-- <xsl:attribute name="match">*</xsl:attribute> -->
90                  <xsl:attribute name="match">/addresses/address</xsl:attribute>
91    
92              <xsl:element name="xsl:choose">
93                  <!-- <xsl:attribute name="match"><xsl:value-of select="@select" /></xsl:attribute> -->
94                <xsl:element name="xsl:when">
95                  <xsl:attribute name="test"><xsl:value-of select="@select" /></xsl:attribute>
96    
97                  <!-- insert-before!!! -->
98                  <!-- <xsl:apply-templates /> -->
99    
100                  <!-- call the "identity template rule" to passthru all childnodes -->
101                  <xsl:element name="xsl:call-template">
102                    <xsl:attribute name="name">identity_template_rule</xsl:attribute>
103                  </xsl:element>
104    
105                  <!-- insert-after!!! -->
106                  <xsl:apply-templates />
107    
108                </xsl:element>
109                <xsl:element name="xsl:otherwise">
110    
111                  <!-- call the "identity template rule" to passthru all childnodes -->
112                  <xsl:element name="xsl:call-template">
113                    <xsl:attribute name="name">identity_template_rule</xsl:attribute>
114                  </xsl:element>
115    
116                </xsl:element>
117    
118              </xsl:element>
119              </xsl:element>
120              
121              <!-- <xsl:apply-templates /> -->
122              
123        </xsl:template>        </xsl:template>
124        
125        <!-- This node passes through all attributes and childnodes rewriting the tagname only. -->        <!-- This node passes through all attributes and childnodes rewriting the tagname only. -->
126        <xsl:template match="xupdate:element">        <xsl:template match="xupdate:element">
127            <xsl:comment> 3. rewrite / vivify elements/attributes </xsl:comment>            <xsl:comment> 3.a. vivify elements </xsl:comment>
128            <xsl:element name="xsl:element">            <xsl:element name="xsl:element">
129                <xsl:copy-of select="@*"/>                <xsl:copy-of select="@*"/>
130                <xsl:apply-templates />                <xsl:apply-templates />
# Line 64  Line 133 
133        
134        <!-- This node passes through all attributes and childnodes rewriting the tagname only. -->        <!-- This node passes through all attributes and childnodes rewriting the tagname only. -->
135        <xsl:template match="xupdate:attribute">        <xsl:template match="xupdate:attribute">
136              <xsl:comment> 3.b. vivify attributes </xsl:comment>
137            <xsl:element name="xsl:attribute">            <xsl:element name="xsl:attribute">
138                <xsl:copy-of select="@*"/>                <xsl:copy-of select="@*"/>
139                <xsl:apply-templates />                <xsl:apply-templates />

Legend:
Removed from v.1.1  
changed lines
  Added in v.1.2

MailToCvsAdmin">MailToCvsAdmin
ViewVC Help
Powered by ViewVC 1.1.26 RSS 2.0 feed