|
[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] key() question?
Hi all,
I'm trying to wrap my brains across a problem which I assume I must be solving using nasty key() tricks. Here's how my input file looks like: <contentModel ename="document">
<group>
<element name="header"/>
<separator type=","/>
<element name="body"/>
<separator type=","/>
<element name="footer"/>
<occurrence type="?"/>
</group>
</contentModel>
<attlist ename="document">
<attributeDecl aname="id" ename="document" atype="ID"/>
<attributeDecl aname="xml:lang" ename="document" atype="NMTOKEN"/>
</attlist>
<contentModel ename="header">
<group>
<element name="title"/>
<separator type=","/>
<element name="subtitle"/>
<occurrence type="?"/>
<separator type=","/>
<element name="version"/>
<occurrence type="?"/>
<separator type=","/>
<element name="type"/>
<occurrence type="?"/>
<separator type=","/>
<element name="authors"/>
<occurrence type="?"/>
<separator type=","/>
<element name="notice"/>
<occurrence type="*"/>
<separator type=","/>
<element name="abstract"/>
<occurrence type="?"/>
</group>
</contentModel>
<attlist ename="header">
<attributeDecl aname="id" ename="header" atype="ID"/>
<attributeDecl aname="xml:lang" ename="header" atype="NMTOKEN"/>
</attlist>and much more like this, so in essence I have plenty of <contentModel> and <attlist> elements which contain content model defitions composed of <element>s, <group>s and the like. Think DTDs but in an XML syntax. I have some keys declared for easy access to the attributes declared for a specific element, and to retrieve the contentModels in which an element is referred to: <xsl:key name="attlistbyname" match="/dtd/attlist" use="@ename"/> <xsl:key name="contentmodelbychildren" match="//contentModel" use="descendant::element/@name"/> The problem with DTDs without an accompagnying instance is that you are not able to devise which element is the root element. As a rule of thumb in my situation, I define root elements as <contentModel> elements which have no <element> counterpart, i.e. the 'document' contentModel in this case: you find a <contentModel ename="document"> without an <element name="document"/> that refers to it inside some other <contentModel>. My question is how I can easily locate <contentModel> elements which don't have an <element> counterpart bearing an attribute 'name' with the contentModel/@ename as its value. Anyone an idea? </Steven> -- Steven Noels http://outerthought.org/ Outerthought - Open Source, Java & XML Competence Support Center stevenn@xxxxxxxxxxxxxxxx stevenn@xxxxxxxxxx XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|

Cart








