Subject: RE: xml inheritance / xslt inheritance application
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Tue, 17 Jun 2008 20:49:11 +0100
|
Assuming XSLT 2.0, with a global variable $default set to the <default>
element, and <column> as the context node, you can access an attribute such
as "type" using
(@type, $default/column[@name=current()/@name]@type)[1]
which might help. If the construct occurs often enough you can wrap it in a
function.
Michael Kay
http://www.saxonica.com/
> -----Original Message-----
> From: Greg Fausak [mailto:lgfausak@xxxxxxxxx]
> Sent: 17 June 2008 20:22
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: xml inheritance / xslt inheritance application
>
> I'm not sure if this is the right group for this question.
> But, here it goes.
>
> I've modeled a xslt translation from a trivial xml syntax to
> postgres. One of the problems I've run in to is the database
> column belongs to a table, e.g.:
> <table name="test">
> <column name="col1" type="int" size="5" minvalue="50"
> maxvalue="10000"/>
> <column name="col2" type="text" size="50" notnull="true"/> </table>
>
> etc..
>
> however, in databaseland, the column is often a domain
> descended from another tree. For example, the column could
> be 'studentid' and that student id could be used in many
> different tables because it is a foreign key.
>
> So, in my source xml, I've introduced
> <default>
> <column name="col1" type="int" .../>
> ...
> and I changed the table xml to:
> <table name="test">
> <column inherit="col1" minvalue="60" />
>
> So, I translate this, but, it sure would be nice if I could
> inherit the attributes and nodes of the default column name
> and override what I want locally. Does such a construct
> exist either on xsl side or xml side?
>
> I did some google searches on inheritance/subtyping and there
> seem to be pretty strong opinions about the subject.
> Worst case I can do a pre-pass on the xml text and use a
> heredoc to expand this sort of thing. Any ideas would be welcome!
>
> Thanks,
>
> ---greg
>
> --
> Greg Fausak
> greg@xxxxxxxxxxxx
|