Ich arbeite mit einer ziemlich seltsamen XML-Datei, es ist eine Liste der beliebtesten Bücher in einer Bibliothek.XML-Filterliste auf berechnetem Verhältnis
Titel eins hat vier Griffe auf zwei Gegenstände, was ein Verhältnis von zwei Halten/Gegenstand ergibt. Titel zwei hat fünf Griffe auf einem Gegenstand, was ein Verhältnis von vier Halten/Gegenstand ergibt, und Titel drei haben ein Verhältnis von fünf Halten/Gegenstand.
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="holdratio3.xsl"?>
<report>
<title>Individual Item Display</title>
<dateCreated>2016-03-29T16:58:57</dateCreated>
<dateFormat>yyyy/mm/dd</dateFormat>
<catalog>
<marc>
<marcEntry tag="245" label="Title" ind="10">Title one</marcEntry>
</marc>
<call>
<item>
<numberOfHolds>4</numberOfHolds>
<type>LOAN</type>
</item>
<item>
<numberOfHolds>4</numberOfHolds>
<type>LOAN</type>
</item>
</call>
</catalog>
<catalog>
<marc>
<marcEntry tag="245" label="Title" ind="10">Title two</marcEntry>
</marc>
<call>
<item>
<numberOfHolds>5</numberOfHolds>
<type>LOAN</type>
</item>
</call>
</catalog>
<catalog>
<marc>
<marcEntry tag="245" label="Title" ind="10">Title three</marcEntry>
</marc>
<call>
<item>
<numberOfHolds>4</numberOfHolds>
<type>LOAN</type>
</item>
</call>
</catalog>
</report>
Ich habe ein Stylesheet, das wie folgt aussieht - und es gibt das gewünschte Ergebnis Hold ratio output. Jetzt frage ich mich, ob es nicht möglich ist, es ein wenig mehr zu verfeinern: Ich möchte das Ergebnis filtern, so dass es nur zeigt, wenn das Verhältnis gleich oder größer als drei ist. Ich googelte, konnte aber keine Lösung finden, die genau richtig war - aber ich denke, es ist entweder für-jedes oder für eine Anwendung-Vorlage?
<?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">
<xsl:sort select="call/item/numberOfHolds div count(call/item [type='LOAN'])" order="descending" />
<ratioline>
<Title><xsl:value-of select="substring(marc/marcEntry[@tag='245'],1,30)"/></Title>
<numberOfHolds><xsl:value-of select="call/item/numberOfHolds"/></numberOfHolds>
<numberOfItemsSelectedType><xsl:value-of select="count(call/item[type='LOAN'])"/></numberOfItemsSelectedType>
<ratio><xsl:value-of select="format-number(call/item/numberOfHolds div count(call/item[type='FLYTANDE' or type='HEMLAN']), '00.##')" /></ratio>
</ratioline>
</xsl:for-each>
</catalog>
</xsl:template>
</xsl:stylesheet>
"* Titel eines vier hat sich auf zwei Elemente * hält" Warum vier? Es gibt zwei Gegenstände, die jeweils einen eigenen Wert haben - welchen wählen Sie und warum? –
Ja, ich weiß - es ist ein seltsamer Wert, der aus unserem Bibliothekssystem kommt. Der Titel enthält vier Haltepunkte, der Wert wird jedoch für jeden Gegenstand wiederholt. Ein gutes Beispiel für schlechte Formatierung :-( –