Subject: Re: [xsl] Dividing a long document into seperate documents From: "Jay Bryant" <jay@xxxxxxxxxxxx> 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 easier to understand if it follows the template path. 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, but > 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> > > <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, Me.).</dc:subject> > <dc:subject>Thaxter, Celia, 1835-1894.</dc:subject> > <dc:subject>Gardens -- Maine -- Appledore Island.</dc:subject> > <dc:subject>Appledore Island (Me.) -- Description and travel.</dc:subject> > <dc:subject>SB466 .U6 T5</dc:subject> > <dc:identifier>http://digital.library.upenn.edu/women/thaxter/garden/garden. html</dc:identifier> > > <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 the > >preceding-sibling axis. As it happens, the metadata elements have no RDF > >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 , Choi Ryan | Thread | Re: [xsl] Dividing a long document , Choi Ryan |
Re: [xsl] Need help with XSLT: addi, Abel Online | Date | RE: [xsl] Interesting problem: Comb, Michael Kay |
Month |