[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

AW: for-each with included variable

Subject: AW: for-each with included variable
From: "Machelett, Renato (FA.G+M-EP/ETK)" <fa-gm-renato.machelett@xxxxxxxxxxxxxxxxxxx>
Date: Fri, 20 Apr 2001 10:26:42 +0200
speaking with brevity
Hi Jeni,


thank you for your input and your explanation. Your approach looks very
clear to me and I will give it a try. Unfortunately I don't think that I can
use keys because that doesn't seem to make sense in a global context and as
I understand I cannot use keys inside a template. But I might be wrong in
both cases. I'd appreciate any hint that helps me improve the design -
speaking of brevity, clarity and maintainability. Right now I find it very
hard to maintain; the stylesheets are very complex, very large (between 10
and 45K each - that's large for me), undocumented and I'm unfamiliar with
XSL. I'm not willing to pass the bundle on to other users in its current
state.

I would have liked to give more information, but the XML-file I'm working on
is confidential, apart from that it's huge - about 5 MB in size with
referenced elements, 20 MB with references resolved, and rather "deep".
So even giving the context for that little part means a major effort, but
I'm doing it anyway to give you an idea of what I'm talking about (I've
omitted about 80% additional descriptive elements). It was very kind of you
to explain in detail what's going on in that expression, and so I think you
deserve that I give my best shot at presenting how everything fits together.
You should disregard syntactical errors as the stuff below is "handcrafted"
for this mail and might not be 100% correct.

Currently for each target file (which usually contains type definitions,
interfaces and basic implementation in one of the desired programming
languages e.g. C or SDL) a basic template is used that mainly contains large
portions of CDATA (target framework and XSL expression) and a template to
replace several small parts (see XSL-skeleton below). That is used together
with a XML-control file to create a stylesheet that is "tailored" to operate
on a desired subset of that big XML-file. (Actually I decided that it's
better to reduce the XML-file to the desired subset and operate on that to
reduce complexity of expressions, but that's another, less painful story.)
That resulting stylesheet (lots of named templates and for-each expressions
like the one I presented)eventually generates the desired header-,
implementation or whatever target file it was designed for.

Of course I think I could use the XSL-skeleton, that I have to deal with
anyway (see below) to do something like this:
<xsl:include "FileWheremyOPTypeListIsDefinedAsText"/>
<![CDATA[<xsl:for-each select="]]>
<xsl:value-of select="$myOPTypeList"/>
<![CDATA["> do some impressive stuff ]]>

But that makes me feel sick. And I'd rather reduce the required
transformations from two to one than add complexity by stuffing the
CDATA-portions with more expressions.


Thanks again!

Renato

--- XML control file ---

<DesiredScope>
  <SuperStructure>
   WonderfulSetOfFunctions
  </SuperStructure>
  <SuperStructure>
   IncredibleSetOfFunctions
  </SuperStructure>
  [..]
</DesiredScope>

--- basic XSL-skeleton, uses XML control file ---

<template match="/">
  <xsl:variable name="myDesiredScope">
     <xsl:if test="//SuperStructure"><xsl:text>[</xsl:text>
	<xsl:for-each select="//SuperStructure">
	   <xsl:if test="position() != 1"><xsl:text> or </xsl:text></xsl:if>
	   <xsl:text>FBlockID='</xsl:text><xsl:value-of
select="@Id"/><xsl:text>'</xsl:text>
	</xsl:for-each>
	<xsl:text>]</xsl:text>
     </xsl:if>
  </xsl:variable>
<![CDATA[<?xml version="1.0" encoding="UTF-8"?> ..lots of target code and
XSLT expressions.. ]]>
<!-- several occurences of --><xsl:value-of select="$myDesiredScope"/>
<![CDATA[<?xml version="1.0" encoding="UTF-8"?> ..more code and XSLT
expressions.. ]]>
</template>

--- XML-skeleton with actual data ---

<..several superstructures, repeatedly..>
  <Function>
    <FunctionClass ..attributes..>
      <Property>
        <PropertyClass ..attributes..>
          <PropertyParameter>
            <PropertyOPType>
              <OPTypeClass>
                <Command ..attributes.. OPTypeRef="XType1">
                </Command> 
              </OPTypeClass>
              <PropertyOPTypeData>
                <Level>
                 0
                </Level>
               <..sub-tree for data structure description..>
              </PropertyOPTypeData>
            </PropertyOPType> 
            <PropertyOPType>
              <OPTypeClass>
                <Command ..attributes.. OPTypeRef="XType1">
                </Command> 
              </OPTypeClass>
            </PropertyOPType> 
              <PropertyOPTypeData>
                <Level>
                 1
                </Level>
                <..sub-tree for data structure description..>
              </PropertyOPTypeData>
          </PropertyParameter>
          <PropertyParameter>
            <PropertyOPType>
              <OPTypeClass>
                <Command ..attributes.. OPTypeRef="XType1">
                </Command> 
              </OPTypeClass>
            </PropertyOPType> 
          </PropertyParameter>
        </PropertyClass>
      </Property>
    </FunctionClass>
  </Function>
  <Function>
    <FunctionClass ..attributes..>
      <Method>
        <MethodClass ..attributes..>
          <MethodParameter>
            <MethodOPType>
              <OPTypeClass>
                <Command ..attributes.. OPTypeRef="XType3">
                </Command> 
              </OPTypeClass>
            </MethodOPType> 
            <MethodOPTypeData>
              <MethodOPTypeData>
                <Level>
                 0
                </Level>
                <..sub-tree for data structure description..>
              </MethodOPTypeData>
            </MethodOPTypeData>
          </MethodParameter>
        </MethodClass>
      </Method>
    </FunctionClass>
  </Function>
</..several superstructures, repeatedly..>


 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Current Thread

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.