2017-03-22 2 views
0

ich versuche, einige Buch Datensätze aus einer größeren Metadaten-Datei zu filtern. Ich brauche nur Datensätze mit einem bestimmten Begriff im Feld "Rechte". Wenn das Feld "イ ン ​​タ ー ッ ッ 公開" enthält, sollte es zu dem Ergebnis gehen, dass jeder andere Datensatz nicht normal ist.Filter Kind Wert und kopieren Eltern in xsl

Probe xml:

<ListRecords> 
    <record> 
    <header> 
    </header> 
    <metadata> 
     <title>農林時報</title> 
     <creator>農林省</creator> 
     <rights>国立国会図書館</rights> 
    </metadata> 
    </record> 
    <record> 
    <header> 
    </header> 
    <metadata> 
     <title>大和本草</title> 
     <creator>貝原篤信</creator> 
     <rights>インターネット公開(保護期間満了)</rights> 
    </metadata> 
    </record> 
</ListRecords> 

Mein xsl:

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet version="1.0" 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    xmlns="http://www.w3.org/TR/REC-html40"> 

<xsl:output method="xml" encoding="utf-16" indent="no" /> 

<xsl:template match="@*|node()"> 
    <xsl:if test="contains(current(), 'インターネット公開')"> 
     <xsl:copy> 
      <xsl:apply-templates select="@*|node()" /> 
     </xsl:copy> 
     </xsl:if> 
</xsl:template> 
</xsl:stylesheet> 

Das Ergebnis sollte das Loch XML-Struktur zeigen, aber nur Datensätze mit dem angegebenen Begriff.

Ich wäre dankbar für jede Hilfe.

+0

Wenn Ihr Ergebnis die bestehende Struktur behalten sollte, warum haben Sie 'xmlns =" ​​http://www.w3.org/TR/REC-html40 "'? –

Antwort

0

Ihr Versuch wird nur Elemente kopieren, die die vorgeschriebene Zeichenfolge in ihrem eigenen Textwert enthalten. Wenn Sie ganze Datensätze zu kopieren, warum gehst du nicht einfach tun:

XSLT 1,0

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/> 
<xsl:strip-space elements="*"/> 

<xsl:template match="/ListRecords"> 
    <xsl:copy> 
     <xsl:copy-of select="record[contains(metadata/rights, 'インターネット公開')]"/> 
    </xsl:copy> 
</xsl:template> 

</xsl:stylesheet> 
+0

Vielen Dank für Ihre Antwort, Testen Sie Ihre Xslt mit Sauerstoff. Im Ergebnis gibt es nur Werte, aber keine Tags und es werden alle Datensätze kopiert. –

+0

@HanzoD. Sehen Sie es hier arbeiten: http://xsltransform.net/bFWR5Fe –

+0

Vielleicht können Sie mir noch einmal helfen, weil ich denke, dass ich mit xslt nicht zurechtkommen kann. Ich habe die Original-XML-Datei hochgeladen: http://xsltransform.net/bFWR5Fe/3 Ich habe meine Probe in Oxygen getestet, aber ich weiß nicht, warum sie nicht funktioniert. Danke im Voraus. –