| 
 
Subject: Re: [xsl] Attribute Matching From: Florent Georges <darkman_spam@xxxxxxxx> Date: Sun, 7 Jan 2007 23:59:48 +0100 (CET)  | 
Karl Stubsjoen wrote:
  Hi
> In a single source of XML I have a FIELDS/FIELD lookup, where there
> are many FIELD elements which may or may not have a flg attribute
> who's value maps to an attribute of the same name in a row element.
> The value of this attribute determines whether or not to include the
> FIELD element in the result.
> So, I'll expand a little with my XML:
> <root>
>   <fields>
>     <field name="Name" flg="flgName"/>
>     <field name="HomeTown" flg="flgHomeTown"/>
>     <field name="Country" flg="flgCountry"/>
>   </fields>
>   <result>
>     <row flgHomeTown="1" flgCountry="0" flgName="0"/>
>     <row flgHomeTown="1" flgCountry="0" flgName="1"/>
>   </result>
> </root>
  So you are using XSLT 1.0?  The following is what your are
looking for, if I correctly understood:
    (drkm)[31] ~/xslt/tests$ cat karl.xsl
    <xsl:stylesheet
        xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
        version="1.0">
      <xsl:output indent="yes"/>
      <xsl:template match="/">
        <res>
          <xsl:apply-templates select="root/result/row"/>
        </res>
      </xsl:template>
      <xsl:template match="row">
        <line>
          <xsl:apply-templates select="@*">
            <xsl:with-param name="fields" select="
                ../../fields/field"/>
          </xsl:apply-templates>
        </line>
      </xsl:template>
      <xsl:template match="row/@*[. = '0']">
        <xsl:param name="fields"/>
      </xsl:template>
      <xsl:template match="row/@*[. = '1']">
        <xsl:param name="fields"/>
        <xsl:variable name="name" select="name()"/>
        <xsl:copy-of select="$fields[@flg = $name]"/>
      </xsl:template>
    </xsl:stylesheet>
    (drkm)[32] ~/xslt/tests$ cat karl.xml
    <root>
      <fields>
        <field name="Name" flg="flgName"/>
        <field name="HomeTown" flg="flgHomeTown"/>
        <field name="Country" flg="flgCountry"/>
      </fields>
      <result>
        <row flgHomeTown="1" flgCountry="0" flgName="0"/>
        <row flgHomeTown="1" flgCountry="0" flgName="1"/>
      </result>
    </root>
    (drkm)[33] ~/xslt/tests$ saxon karl.xml karl.xsl
    Warning: at xsl:stylesheet on line 3 of karl.xsl:
      Running an XSLT 1.0 stylesheet with an XSLT 2.0 processor
    <?xml version="1.0" encoding="UTF-8"?>
    <res>
       <line>
          <field name="HomeTown" flg="flgHomeTown"/>
       </line>
       <line>
          <field name="HomeTown" flg="flgHomeTown"/>
          <field name="Name" flg="flgName"/>
       </line>
    </res>
    (drkm)[34] ~/xslt/tests$ xsltproc karl.xsl karl.xml
    <?xml version="1.0"?>
    <res>
      <line>
        <field name="HomeTown" flg="flgHomeTown"/>
      </line>
      <line>
        <field name="HomeTown" flg="flgHomeTown"/>
        <field name="Name" flg="flgName"/>
      </line>
    </res>
    (drkm)[35] ~/xslt/tests$
  Regards,
--drkm
__________________________________________________
Do You Yahoo!?
En finir avec le spam? Yahoo! Mail vous offre la meilleure protection possible contre les messages non sollicitis 
http://mail.yahoo.fr Yahoo! Mail 
| Current Thread | 
|---|
  | 
| <- Previous | Index | Next -> | 
|---|---|---|
| Re: [xsl] Attribute Matching, Karl Stubsjoen | Thread | Re: [xsl] Attribute Matching, Karl Stubsjoen | 
| [xsl] NMTOKENS and xsl:key, Houghton,Andrew | Date | Re: [xsl] NMTOKENS and xsl:key, David Carlisle | 
| Month |