XSLT-Entfernen von Duplikaten
Ich habe eine xml-Datenquelle, die wie folgt aussieht:
<dsQueryResponse>
<Department>
<Rows>
<Row dept="HR" state="NY" region="East"/>
<Row dept="HR" state="NJ" region="East"/>
<Row dept="SD" state="NY" region="East"/>
<Row dept="MM" state="NY" region="East"/>
<Row dept="SD" state="NJ" region="East"/>
<Row dept="SD" state="CO" region="West"/>
<Row dept="MM" state="CO" region="West"/>
</Rows>
</Department>
</dsQueryResponse>
Mein XSLT sieht wie folgt aus:
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl">
<xsl:output method="html" indent="no"/>
<xsl:decimal-format NaN=""/>
<xsl:param name="DeptQS">East</xsl:param>
<xsl:variable name="deptRows" select="/dsQueryResponse/Department/Rows/Row[@region = $DeptQS]"/>
<xsl:template match="/">
<xsl:if test="count($deptRows) > 0">
<xsl:call-template name="deptList"/>
</xsl:if>
</xsl:template>
<xsl:template name="deptList">
<xsl:for-each select="$deptRows">
<!-- process unique depts-->
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
Ich will alle Abteilungen in der region geschrieben. Den code habe ich nun Schreibe doppelten Abteilungen. Aber wie kann ich das schreiben aus der Abteilung für die region nur einmal?
Dank!
- Bitte geben Sie das tatsächliche und das erwartete Ergebnis. Ansonsten ist es schwer zu verstehen, was Sie genau brauchen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Für XSLT 1.0, können Sie die "Muenchian Methode".
Erstellen Sie eine Taste, um den index der
Row
Elemente durch eine Kombination von@region
und@dept
Werte.Ist, dann hätte man das erste auftreten der region/department Kombination (das hat die gesuchte region (
$DeptQS
)) und output der Abteilung (dept
).Hier ist ein Beispiel-stylesheet der Ausgabe
<test>
Elemente zu zeigen, die Kontext:Hier ist die Ausgabe mit Ihrer XML-Eingabe:
xsl:key/@match
Ihnen angezeigt, noch nicht das gewünschte Ergebnis. Aber in XSLT 2.0 konnten Sie so etwas tun:
</
zu Ende-tags in einem XML-editor mit auto-Vervollständigung, so Neige ich dazu, verwenden Sie es als Abkürzung beim schreiben von "sketchy" XML in notes wie diese; es ist ein signal an die Leser, die Sie anwenden sollten einige Gehirn-Zyklen, anstatt einfach kopieren Sie den code und erwarten, dass es funktioniert out of the box.Diesem stylesheet:
Ausgabe:
Das folgende stylesheet zeigt einen Allgemeinen Ansatz für die Gruppierung auf mehreren Ebenen:
Es produziert die folgende Ausgabe auf Ihre Eingabe: