Subject: Re: [xsl] Dividing a long document into seperate documents From: "Choi Ryan" <yutaka234@xxxxxxxxxxx> Date: Thu, 17 Aug 2006 04:40:26 +0900 |
Cheers, Ryan
easierFrom: "Jay Bryant" <jay@xxxxxxxxxxxx> Reply-To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx To: <xsl-list@xxxxxxxxxxxxxxxxxxxxxx> Subject: Re: [xsl] Dividing a long document into seperate documents Date: Wed, 16 Aug 2006 13:07:31 -0500
Because you are reaching into the metadata element.
Replace
<xsl:result-document href="{concat('rdf', count(preceding-sibling::oai_dc:dc) +1, '.rdf')}">
with
<xsl:result-document href="{concat('rdf', count(../preceding-sibling::metadata[oai_dc:dc]) +1, '.rdf')}">
Notice that it's now counting metadata elements that have oai_dc:dc children.
Also, you might try the following arrangement:
<xsl:template match="uiuc"> <xsl:apply-templates/> </xsl:template>
<xsl:template match="metadata"> <xsl:result-document href="{concat('rdf', count(preceding-sibling::metadata[oai_dc:dc]) + 1, '.rdf')}"> <xsl:apply-templates/> </xsl:result-document> </xsl:template>
<xsl:template match="oai_dc:dc"> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:oai_dc="http://www.openarchives.org/OAI/2.0/oai_dc/">
<xsl:variable name="identifier"> <xsl:value-of select="normalize-space(dc:identifier)"/> </xsl:variable> <rdf:Description> <xsl:attribute name="rdf:about"><xsl:value-of select="$identifier"/></xsl:attribute> <rdf:type rdf:resource="http://purl.org/gem/qualifiers/GEM2"/> <xsl:apply-templates select="dc:identifier"/> <xsl:apply-templates select="dc:title"/> <xsl:apply-templates select="dc:creator"/> <xsl:apply-templates select="dc:subject"/> <xsl:apply-templates select="dc:format"/> <xsl:apply-templates select="dc:description"/> <xsl:apply-templates select="dc:publisher"/> <xsl:apply-templates select="dc:date"/> <xsl:apply-templates select="dc:type"/> <xsl:apply-templates select="dc:contributor"/> <xsl:apply-templates select="dc:coverage"/> <xsl:apply-templates select="dc:rights"/> <xsl:apply-templates select="dc:language"/> <xsl:apply-templates select="dc:relation"/> <xsl:apply-templates select="dc:source"/> </rdf:Description> </rdf:RDF> </xsl:template>
XSLT's natural model is applying templates. The code can sometimes be
to understand if it follows the template path.but
Jay Bryant Bryant Communication Services
----- Original Message ----- From: "Choi Ryan" <yutaka234@xxxxxxxxxxx> To: <xsl-list@xxxxxxxxxxxxxxxxxxxxxx> Sent: Wednesday, August 16, 2006 12:28 PM Subject: Re: [xsl] Dividing a long document into seperate documents
> Um. It is kind of weired. Your suggestion works for a similar example,
> not in this xslt. Have no idea why... > > Any idea?? > > Here is my xslt... and my xml files.. Any suggestion??? > > XSLT: > <xsl:stylesheet version="2.0" > xmlns:xsl="http://www.w3.org/1999/XSL/Transform" > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" > xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" > xmlns:dc="http://purl.org/dc/elements/1.1/" > xmlns:oai_dc="http://www.openarchives.org/OAI/2.0/oai_dc/" > > > <xsl:output encoding="UTF-8" method="xml" indent="yes" /> > > <xsl:template match="uiuc"> > <xsl:for-each select="metadata/oai_dc:dc"> > <xsl:result-document href="{concat('rdf', > count(preceding-sibling::oai_dc:dc) +1, '.rdf')}"> > > <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" > xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" > xmlns:dc="http://purl.org/dc/elements/1.1/" > xmlns:oai_dc="http://www.openarchives.org/OAI/2.0/oai_dc/"> > > <xsl:variable name="identifier"> > <xsl:value-of select="normalize-space(dc:identifier)"/> > </xsl:variable> > <rdf:Description> > <xsl:attribute name="rdf:about"><xsl:value-of > select="$identifier"/></xsl:attribute> > <rdf:type rdf:resource="http://purl.org/gem/qualifiers/GEM2"/> > <xsl:apply-templates select="dc:identifier"/> > <xsl:apply-templates select="dc:title"/> > <xsl:apply-templates select="dc:creator"/> > <xsl:apply-templates select="dc:subject"/> > <xsl:apply-templates select="dc:format"/> > <xsl:apply-templates select="dc:description"/> > <xsl:apply-templates select="dc:publisher"/> > <xsl:apply-templates select="dc:date"/> > <xsl:apply-templates select="dc:type"/> > <xsl:apply-templates select="dc:contributor"/> > <xsl:apply-templates select="dc:coverage"/> > <xsl:apply-templates select="dc:rights"/> > <xsl:apply-templates select="dc:language"/> > <xsl:apply-templates select="dc:relation"/> > <xsl:apply-templates select="dc:source"/> > </rdf:Description> > </rdf:RDF> </xsl:result-document></xsl:for-each> > </xsl:template> > > <xsl:template match="dc:identifier"> > <dc:identifier rdf:resource="{normalize-space(.)}"/> > </xsl:template> > > <xsl:template match="dc:title"> > <dc:title> > <xsl:value-of select="normalize-space(.)"/> > </dc:title> > </xsl:template> > > <xsl:template match="dc:creator"> > <dc:creator> > <xsl:value-of select="normalize-space(.)"/> > </dc:creator> > </xsl:template> > > <xsl:template match="dc:subject"> > <dc:subject> > <xsl:value-of select="normalize-space(.)"/> > </dc:subject> > </xsl:template> > > <xsl:template match="dc:format"> > <dc:format> > <xsl:value-of select="normalize-space(.)"/> > </dc:format> > </xsl:template> > > <xsl:template match="dc:description"> > <dc:description> > <xsl:value-of select="normalize-space(.)"/> > </dc:description> > </xsl:template> > > <xsl:template match="dc:publisher"> > <dc:publisher> > <xsl:value-of select="normalize-space(.)"/> > </dc:publisher> > </xsl:template> > > <xsl:template match="dc:date"> > <dc:date> > <xsl:value-of select="normalize-space(.)"/> > </dc:date> > </xsl:template> > > <xsl:template match="dc:type"> > <dc:type> > <xsl:value-of select="normalize-space(.)"/> > </dc:type> > </xsl:template> > > <xsl:template match="dc:contributor"> > <dc:contributor> > <xsl:value-of select="normalize-space(.)"/> > </dc:contributor> > </xsl:template> > > <xsl:template match="dc:coverage"> > <dc:coverage> > <xsl:value-of select="normalize-space(.)"/> > </dc:coverage> > </xsl:template> > > <xsl:template match="dc:language"> > <dc:language> > <xsl:value-of select="normalize-space(.)"/> > </dc:language> > </xsl:template> > > <xsl:template match="dc:rights"> > <dc:rights> > <xsl:value-of select="normalize-space(.)"/> > </dc:rights> > </xsl:template> > > <xsl:template match="dc:relation"> > <dc:relation> > <xsl:value-of select="normalize-space(.)"/> > </dc:relation> > </xsl:template> > > <xsl:template match="dc:source"> > <dc:source> > <xsl:value-of select="normalize-space(.)"/> > </dc:source> > </xsl:template> > > </xsl:stylesheet> > > > My xml file: > > <?xml-stylesheet type="text/xsl" href="uiuc_item.xsl"?> > <uiuc> > <metadata> > <oai_dc:dc xmlns:dc="http://purl.org/dc/elements/1.1/" > xmlns:oai_dc="http://www.openarchives.org/OAI/2.0/oai_dc/" > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai_dc/ > http://www.openarchives.org/OAI/2.0/oai_dc.xsd"> > <dc:title>Oldtown Folks</dc:title> > <dc:creator>Stowe, Harriet Beecher, 1811-1896</dc:creator> > <dc:subject>New England -- Social life and customs -- Fiction.</dc:subject> > <dc:subject>Women -- New England -- Fiction.</dc:subject> > <dc:subject>PS2954 .O4</dc:subject> > <dc:identifier>http://digital.library.upenn.edu/women/stowe/folks/folks.html
</dc:identifier>Me.).</dc:subject>
>
> <dc:format>text/html</dc:format>
> <dc:description>Boston: Fields, Osgood, and Co., 1869</dc:description>
> <dc:publisher>Fields, Osgood, and Co.</dc:publisher>
> <dc:date>1869</dc:date>
> <dc:publisher>A Celebration of Women Writers</dc:publisher>
> <dc:date>2001-01-11</dc:date>
> <dc:type>Text</dc:type>
> </oai_dc:dc>
> </metadata>
> <metadata>
> <oai_dc:dc xmlns:dc="http://purl.org/dc/elements/1.1/"
> xmlns:oai_dc="http://www.openarchives.org/OAI/2.0/oai_dc/"
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
> xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai_dc/
> http://www.openarchives.org/OAI/2.0/oai_dc.xsd">
> <dc:title>An Island Garden</dc:title>
> <dc:creator>Thaxter, Celia, 1835-1894</dc:creator>
> <dc:creator>Hassam, Childe</dc:creator>
> <dc:subject>Celia Thaxter's Garden (Appledore Island,
> <dc:subject>Thaxter, Celia, 1835-1894.</dc:subject>travel.</dc:subject>
> <dc:subject>Gardens -- Maine -- Appledore Island.</dc:subject>
> <dc:subject>Appledore Island (Me.) -- Description and
> <dc:subject>SB466 .U6 T5</dc:subject> > <dc:identifier>http://digital.library.upenn.edu/women/thaxter/garden/garden.
html</dc:identifier>the
>
> <dc:format>text/html</dc:format>
> <dc:publisher>A Celebration of Women Writers</dc:publisher>
> <dc:date>2001-07-13</dc:date><dc:type>Text</dc:type>
> </oai_dc:dc>
> </metadata>
> </uiuc>
>
>
>
> >From: "Jay Bryant" <jay@xxxxxxxxxxxx>
> >Reply-To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> >To: <xsl-list@xxxxxxxxxxxxxxxxxxxxxx>
> >Subject: Re: [xsl] Dividing a long document into seperate documents
> >Date: Tue, 15 Aug 2006 16:53:57 -0500
> >
> >The reason it's creating just one record is because it's counting up
> >preceding-sibling axis. As it happens, the metadata elements have noRDF
> >elements as preceding siblings, so it never gets anywhere. If you're > trying > >to create an RDF file for each metadata/oai_dc:dc element, then count > those > >elements, thus: > > > ><xsl:for-each select="metadata/oai_dc:dc"> > > <xsl:result-document href="{concat('rdf', > >count(preceding-sibling::oai_dc:dc) +1, '.rdf')}"> > > <!-- Snipped the other processing --> > > </xsl:result-document> > ></xsl:for-each> > > > >HTH > > > >Jay Bryant > >Bryant Communication Services > > > > _________________________________________________________________ > MSN Messenger8& EkGX ?B6s@N;s?! @V4B D#18?M 4kH-8& 3*4)<<?d. > http://messenger.msn.co.kr
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Dividing a long document , Jay Bryant | Thread | [xsl] Only first rows (after the so, Stinissen, Dennis |
Re: [xsl] Process only nodes on a s, Marco Baumgartl | Date | RE: [xsl] Are nested brackets legal, Michael Kay |
Month |