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

RE: Accessing values from another sub-tree

Subject: RE: Accessing values from another sub-tree
From: David Schach <davidsch@xxxxxxxxxxxxx>
Date: Thu, 7 Jan 1999 11:27:57 -0800
schach schema
Yes, this can be accomplished within the XSL spec. If you change your data
so that it uses id/idrefs then you do not need the follow() function.  I've
highlighted the attributes that should become ididrefs. For example,

	<Class name="Customer">
		<Property name="FirstName" datatype="String"/>
		<Property name="LastName" datatype="String"/>
		<Property name="CustID" datatype="Integer"/>
		<Key primary="true">
			<Part href="CustID'" />
	</Key>

	<Class name="Address">
		<Property name="Street" datatype="String"/>
		<Property name="City" datatype="String"/>
		<Property name="ZIP" datatype="String"/>
		<Property name="State" datatype="String"/>
		<Key primary="true">
			<Part href="../Property/@name='Zip'" />
			<Part href="../Property/@name='Street'" />
		</Key>
</Class>
	...
	<Association name="AccessibleAt">
		<AssociationEnd href="Customer'" role="theCustomer"
	cardinality="*"/>
		<AssociationEnd href="Address'" role="theAddress"
	cardinality="*"/>
</Association>

Then the XSL becomes
				<xsl:for-each
select="id(@href)/Key[@primary='true']/Part">

Note: This feature is not available in the IE5b2 but it will be available in
the final release of IE5.  

> -----Original Message-----
> From:	Vun Kannon, David [SMTP:dvunkannon@xxxxxxxx]
> Sent:	Wednesday, January 06, 1999 2:12 PM
> To:	xsl-list@xxxxxxxxxxxxxxxx
> Subject:	Accessing values from another sub-tree
> 
> 	I've been trying to achieve a particular result without success.
> Since I'm unsure if the problem is my own thickheadedness, the
> implementation of XSL I'm using (IE5b2), or the language itself, I turn to
> this forum for advice.
> 
> 	I've cooked up an XML encoding of UML by working as directly as
> possible from the UML spec. A VB script inside Rational Rose lets me build
> schemas such as:
> <Schema name="SimpleBank">
> <Class name="Customer">
> 	<Property name="FirstName" datatype="String"/>
> 	<Property name="LastName" datatype="String"/>
> 	<Property name="ID" datatype="Integer"/>
> 	<Key primary="true">
> 		<Part href="../Property/@name='ID'" />
> 	</Key>
> </Class>
> 
> <Class name="Address">
> 	<Property name="Street" datatype="String"/>
> 	<Property name="City" datatype="String"/>
> 	<Property name="ZIP" datatype="String"/>
> 	<Property name="State" datatype="String"/>
> 	<Key primary="true">
> 		<Part href="../Property/@name='Zip'" />
> 		<Part href="../Property/@name='Street'" />
> 	</Key>
> </Class>
> 
> <Association name="AccessibleAt">
> 	<AssociationEnd href="//Class/@name='Customer'" role="theCustomer"
> cardinality="*"/>
> 	<AssociationEnd href="//Class/@name='Address'" role="theAddress"
> cardinality="*"/>
> </Association>
> </Schema>
> 
> 	Given this type of schema, I'm attempting to use an XSL stylesheet
> to transform the schema into SQL DDL. The result I'm aiming for from the
> above schema would be something like this:
> Create Schema SimpleBank 
> Create Table Customer (
> 	FirstName varchar,
> 	LastName varchar,
> 	ID integer,
> 	Primary Key ( ID )
> );
> Create Table Address (
> 	Street varchar,
> 	City varchar,
> 	ZIP varchar,
> 	State varchar,
> 	Primary Key ( Street, ZIP )
> );
> Create Table AccessibleAt (
> 	-- from theCustomer
> 	ID integer,
> 	-- from theAddress
> 	Street varchar,
> 	ZIP varchar
> );
> 
> 	The many-to-many association becomes a join table. The stylesheet
> looks like:
> <xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
>   <xsl:template match="/">
> 	Create Schema <xsl:value-of select="//Schema/@name"/>
>          <xsl:for-each select="//Class">
> 		Create Table <xsl:value-of select="@name"/> (
> 	         <xsl:for-each select="Property">
> 		<xsl:value-of select="@name"/>&#32;<xsl:value-of
> select="@datatype"/>
> 		<xsl:if match="Property[$not$ end()]">,</xsl:if>
> 	          </xsl:for-each>
> 	         <xsl:for-each select="Key[@primary='true']">,
> 		Primary Key (
> 		         <xsl:for-each select="Part">
> 			<xsl:value-of select="follow(@href)/@name"/>
> 				<xsl:if match="Part[$not$ end()]">,
> </xsl:if>
> 		          </xsl:for-each> )
> 	          </xsl:for-each>
> 		);
>           </xsl:for-each>
>         <xsl:for-each select="//Association">
> 		Create Table <xsl:value-of select="@name"/> (
> 	         <xsl:for-each select="AssociationEnd">
> 			-- From <xsl:value-of select="@role"/>
> 			<xsl:for-each
> select="follow(@href)/Key[@primary='true']/Part">
> 				<xsl:value-of select="follow(@href)/@name"/>
> 				<xsl:if match="Part[$not$ end()]">,
> </xsl:if>
> 			</xsl:for-each>
> 			<xsl:if match="AssociationEnd[$not$
> end()]">,</xsl:if>
> 	          </xsl:for-each>
> 		);
>           </xsl:for-each>
>    </xsl:template>  
> </xsl:stylesheet>
> 
> 	Now, everything in the stylesheet is plain vanilla, except for that
> follow() function in the selection patterns. Its sort of like the WD
> function id() on steroids. The question I put before you is whether or not
> the functionality of follow() can be accomplished within the spec or
> within
> any implementation. If not, consider this a plea for such functionality in
> the pattern language. Given the position of the XSL WG in its position
> paper
> for QL '98, that the W3C should look in-house for technology for the
> generic
> query language, it would be nice if XSL itself understood a little about
> links and the "in-house W3C technology" of XLink and XPointer.
> Cheers,
> David vun Kannon
> Manager, KPMG LLP
> **************************************************************************
> ***
> The information in this email is confidential and may be legally
> privileged.
> It is intended solely for the addressee. Access to this email by anyone
> else
> is unauthorized. 
> 
> If you are not the intended recipient, any disclosure, copying,
> distribution
> or any action taken or omitted to be taken in reliance on it, is
> prohibited
> and may be unlawful. When addressed to our clients any opinions or advice
> contained in this email are subject to the terms and conditions expressed
> in
> the governing KPMG client engagement letter.         
> **************************************************************************
> ***
> 
> 
>  XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


 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.