开发者

XSLT wrapping node text around child node value

So I have an xml file containing

...
<chapter>
    <para>This line has a quote <quote id="one"/>. Here is some more text.</para>
    <para>This also has a quote <quote id="two"/>. Here is some more text.</para>
</chapter>
<references>
    <source id="one">
        <autho开发者_运维知识库r>Author 1</author>
        <title>Title 1</title>
        <year>2001</year>
    </source>
     <source id="two">
        <author>Author 2</author>
        <title>Title 2</title>
        <year>2002</year>
    </source>
</references>
...

I would like to output an xhtml

...
<p>This line has a quote <a href="#one>[1]</a>. Here is some more text.</p>
<p>This also has a quote <a href="#two>[2]</a>. Here is some more text.</p>
<h3>References</h3>
<ol>
    <li><a name="one">Author 1, Title 1, 2001</a></li>
    <li><a name="two">Author 2, Title 2, 2002</a></li>
</ol>
...

So what I want is a quote inside text with a link to an item in the references list. I would also like for references to be ordered as they appear in text.


<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output indent="yes" />

    <xsl:template match="para">
        <p><xsl:apply-templates/></p>
    </xsl:template>

    <xsl:template match="quote">
        <a href="#{@id}">
        <xsl:text>[</xsl:text>
        <xsl:number count="quote" level="any" />
        <xsl:text>]</xsl:text>
        </a>
    </xsl:template>

    <xsl:template match="references">
        <h3>References</h3>
        <ol>
            <xsl:apply-templates/>
        </ol>
    </xsl:template>

    <xsl:template match="source">
        <li>
            <a name="{@id}">
                <xsl:apply-templates/>
            </a>
        </li>
    </xsl:template>

    <xsl:template match="author|title">
        <xsl:value-of select="."/>
        <xsl:text>, </xsl:text>
    </xsl:template>

    <xsl:template match="year">
        <xsl:value-of select="."/>
    </xsl:template>

</xsl:stylesheet>
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜