我正在尝试使用XSLT按作者名称对参考书目进行排序。但是,作者的姓氏出现在xml结构的不同位置,具体取决于它的文本类型(书籍,期刊等)。
以下是数据:
<biblStruct type="book" xml:id="Swanson2002">
<monogr>
<title>Universities, academics and the Great Schism</title>
<author>
<forename>R. N</forename>
<surname>Swanson</surname>
</author>
<imprint>
<pubPlace>Cambridge</pubPlace>
<biblScope type="vol">12</biblScope>
<publisher>Cambridge Univ Pr</publisher>
<date>2002</date>
<note type="accessed">2012-07-06 18:34:53</note>
<note type="url">http://books.google.com/books?hl=en&lr=&id=9AUE425_1xYC&oi=fnd&pg=PR8&dq=Swanson,+Univiersities+Plaoul&ots=EdkhHvSExW&sig=tFOJKFi2myNWhkR_Rl4XE-cQcSc</note>
</imprint>
</monogr>
<note type="tags">
<note type="tag">Petrus Plaoul</note>
</note>
<idno type="ISBN">0521522269</idno>
</biblStruct>
<biblStruct type="journalArticle" xml:id="Maier1958">
<analytic>
<title>Zu einigen Sentenzenkommentaren des XIV Jahrunderts</title>
<author>
<forename>A.</forename>
<surname>Maier</surname>
</author>
</analytic>
<monogr>
<title>Archivum franciscanum historicum</title>
<imprint>
<biblScope type="vol">51</biblScope>
<biblScope type="pp">405-409</biblScope>
<date>1958</date>
</imprint>
</monogr>
<note type="tags">
<note type="tag">Hard Copy Obtained</note>
</note>
</biblStruct>
<biblStruct type="bookSection" xml:id="Kaluza1995">
<analytic>
<title>Les débuts de l'Albertisme tardif (Paris et Cologne)</title>
<author>
<forename>Zenon</forename>
<surname>Kaluza</surname>
</author>
</analytic>
<monogr>
<title>Albertus Magnus und der Albertismus</title>
<imprint>
<pubPlace>Leiden</pubPlace>
<biblScope type="pp">207-295</biblScope>
<publisher>Brill</publisher>
<date>1995</date>
</imprint>
</monogr>
</biblStruct>
这是我的XSLT模板
<xsl:template match="tei:listBibl">
<xsl:for-each select="./tei:biblStruct">
<xsl:sort select="./tei:monogr/tei:author/tei:surname"/>
</xsl:for-each/>
</xsl:template/>
目前,这只会对@type=monogr
我也试过这个,但它不起作用:
<xsl:sort select="./tei:monogr/tei:author/tei:surname or ./tei:analytic/tei:author/tei:surname"/>
答案 0 :(得分:3)
它看起来像是
<xsl:sort select=".//author/surname"/>
或
<xsl:sort select="./*/author/surname"/>
会完成这项工作
您不想使用“或”运算符,它始终返回布尔结果,但如果需要,您可以使用“union”运算符(|):
<xsl:sort select="monogr/author/surname | analytic/author/surname"/>
在2.0中可以缩短为
<xsl:sort select="(monogr|analytic)/author/surname"/>