私はこのXMLファイルを持っています(無関係なノードは除外されています)。私はソートする必要があります。 著者が存在する場合、ソートは作成者にする必要があります。 同じ著者がより多くの本を書いた場合、その本はタイトルでソートされるべきです。著者が不足している場合、ソートはタイトルの最初の単語にする必要があります。 希望の順序は次のとおりです:Lacey、Minna - 新しい先進的な教授法 - テクニカル・ミューゼット - Wrede、Eva:Arton kvadrat - Wrede、Eva:Femton kvadrat。複数のノードからのコンテンツのXSLソート
著者は、MarcEntryタグ100またはMarcEntryタグ110のいずれかを持つことができますが、両方を指定することはできません。著者のないレコードがあります。すべてのレコードは私のスタイルシート
<xsl:sort select="../../marc/marcEntry[@tag='100' or @tag='110']"/>
にタイトル= MarcEntryタグ245
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="gallring2.xsl"?>
<report>
<catalog>
<marc>
<marcEntry tag="100" label="Personal Author" ind="1 ">Wrede, Eva</marcEntry>
<marcEntry tag="245" label="Title" ind="10">Arton kvadrat</marcEntry>
</marc>
<call>
<item>
<itemID>3058000817845</itemID>
</item>
</call>
</catalog>
<catalog>
<marc>
<marcEntry tag="100" label="Personal Author" ind="1 ">Wrede, Eva</marcEntry>
<marcEntry tag="245" label="Title" ind="10">Femton kvadrat</marcEntry>
</marc>
<call>
<item>
<itemID>30580008156593</itemID>
</item>
</call>
</catalog>
<catalog>
<marc>
<marcEntry tag="110" label="Corporate Author" ind="2 ">Tekniska museet</marcEntry>
<marcEntry tag="245" label="Title" ind="10">35 mer eller mindre märkliga föremål i Tekniska museets samlingar</marcEntry>
</marc>
<call>
<item>
<itemID>30580008290806</itemID>
</item>
</call>
</catalog>
<catalog>
<marc>
<marcEntry tag="100" label="Personal Author" ind="1 ">Lacey, Minna</marcEntry>
<marcEntry tag="245" label="Title" ind="10">365 experiment för nyfikna barn</marcEntry>
</marc>
<call>
<item>
<itemID>30580009824363</itemID>
</item>
</call>
</catalog>
<catalog>
<marc>
<marcEntry tag="245" label="Title" ind="10">New advanced teaching methods.</marcEntry>
</marc>
<call>
<item>
<itemID>30580008182334</itemID>
</item>
</call>
</catalog>
</report>
私はこれを試してみましたがありますが、それは私だけでエラーを与えただけであったであろう半の道を、それが働いていました。
どのように続行するとよいでしょうか? XSLT 2.0と拡張機能はオプションではありません。
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="/">
<catalog>
<xsl:for-each select="report/catalog/call/item">
<xsl:sort select="../../marc/marcEntry[@tag='100']"/>
<xsl:sort select="../../marc/marcEntry[@tag='245']"/>
<itemline>
<Author><xsl:value-of select="substring(../../marc/marcEntry[@tag='100' or @tag='110'],1,30)"/></Author>
<Title><xsl:value-of select="substring(../../marc/marcEntry[@tag='245'],1,30)"/></Title>
<itemID><xsl:value-of select="itemID"/></itemID>
</itemline>
</xsl:for-each>
</catalog>
</xsl:template>
</xsl:stylesheet>
を 'ます。'が有効です。あなたがそれを使用したときにどんなエラーがありましたか? –