xsl-list
[Top] [All Lists]

Re: Trying to build a schema and add a namespace

2005-04-20 15:06:27
Ok this approach worked perfectly. The only difference from what I tried and this was how the variable definition was placed. I placed the variable definition inside the for-each loop and used the same element and saxon function trick but that didn't work. I got something about duplicate namespaces being defined.

If I understand this example, the result is one variable that contains multiple elements, these elements are made into a nodeset and then their namespaces are used to add them to the schema element.

I don' t have the code that failed any longer, but I'm curious if there seems to be any real difference in the approaches? Shouldn't both methods work? The only difference I see about what I tried vs what is here is that I did the additions piece meal (probably more overhead) but the results should have been the same. Barring a dumb coding error, is there anything that jumps out as to why my approach shouldn't have worked?

Thank you very much.

..dan

At 09:11 AM 4/20/2005, David Carlisle wrote:

  A revised stylesheet with one entry
  being for the default namespace (no prefix) would be useful.

Note that attributes have a different meaning for no-prefix than
elements, so to include that case you have to use element nodes rather
than attribute nodes to generate the namespaces, but basically it's as
before


<namespaces>
<namespace prefix="xsd">schema ns</namespace>
<namespace prefix="">defaulttns</namespace>
<namespace prefix="yy">ACORD default URL</namespace>
<namespace prefix="acord-doc">ACORD doc URL</namespace>
<namespace prefix="jag">ACORD JAG URL</namespace>
</namespaces>





<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
                   version="1.0"
                   xmlns:saxon="http://icl.com/saxon";
                   exclude-result-prefixes="saxon"
             xmlns:xsd="schema ns"
             >
<xsl:output method="xml" indent="yes" />

<xsl:template match="/">

 <xsd:schema>

<xsl:variable name="rtf">
<xsl:for-each select="/namespaces/namespace">
<xsl:variable name="x"><xsl:if test="string(@prefix)">:</xsl:if></xsl:variable>
      <xsl:element name="{(_at_)prefix}{$x}foo" namespace="{.}"/>
</xsl:for-each>
</xsl:variable>
<xsl:copy-of select="saxon:node-set($rtf)/*/namespace::*"/>
</xsd:schema>

</xsl:template>
</xsl:stylesheet>


$ saxon ns2.xml ns2.xsl
<?xml version="1.0" encoding="utf-8"?>
<xsd:schema
   xmlns:xsd="schema ns"
  xmlns="defaulttns"
  xmlns:yy="ACORD default URL"
  xmlns:acord-doc="ACORD doc URL"
  xmlns:jag="ACORD JAG URL"/>

________________________________________________________________________
This e-mail has been scanned for all viruses by Star. The
service is powered by MessageLabs. For more information on a proactive
anti-virus service working around the clock, around the globe, visit:
http://www.star.net.uk
________________________________________________________________________

--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--

---------------------------------------------------------------------------
Danny Vint

Specializing in Panoramic Images of California and the West
http://www.dvint.com

voice: 510-522-4703




--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--