1
我需要對從外部xml文件集合拉入的列表值進行排序。從外部文檔中拉入的XSLT排序列表項
輸入文檔:
<book>
<div type="chapter">
<div xml:id="d9">
<head>First Chapter</head>
<p>First paragraph ...</p>
</div>
<DOI>12.3456/789.n1</DOI>
</div>
</book>
外部文檔1:
<rdf:RDF
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:owl="http://www.w3.org/2002/07/owl#"
xmlns:luxid="http://www.temis.com/luxid#"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<rdf:Description rdf:about="http://dx.doi.org/10.4135/9781446270288.n2">
<dc:identifier>12.3456/789.n1</dc:identifier>
</rdf:Description>
<rdf:Description rdf:about="http://www.temis.com/luxid#/Entity/Bookshelf/HSSTerm/personal values">
<luxid:lemmatizedForm>personal values</luxid:lemmatizedForm>
<luxid:score>0.31063202</luxid:score>
</rdf:Description>
<rdf:Description rdf:about="http://www.temis.com/luxid#/Entity/Bookshelf/HSSTerm/athletes">
<luxid:lemmatizedForm>athletes</luxid:lemmatizedForm>
<luxid:score>0.32773998</luxid:score>
</rdf:Description>
</rdf:RDF>
而且在相同的格式更多的外部文檔。
此XSLT根據DOI元素從外部文檔中提取關鍵字。
XSLT:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns="http://www.tei-c.org/ns/1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:doi="http://www.doi.org/2004/DOISchema"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:owl="http://www.w3.org/2002/07/owl#"
xmlns:luxid="http://www.temis.com/luxid#"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xpath-default-namespace="http://www.tei-c.org/ns/1.0" version="2.0" exclude-result-prefixes="dc owl luxid rdfs rdf">
<xsl:output method="xml" encoding="UTF-8" version="1.0"/>
<xsl:variable name="rdfFiles" select="collection('file:///C:/files/?select=*.xml*')"/>
<!-- Chapter level keywords -->
<xsl:template match="div[@type='chapter']/DOI">
<xsl:element name="div">
<xsl:element name="list">
<xsl:for-each select="$rdfFiles//rdf:RDF//rdf:Description/luxid:lemmatizedForm[ancestor::rdf:RDF//rdf:Description/dc:identifier/text() = current()/text()]">
<xsl:sort data-type="number" select="following-sibling::luxid:score"/>
<xsl:element name="item">
<xsl:value-of select="."/>
</xsl:element>
</xsl:for-each>
</xsl:element>
</xsl:element>
<xsl:element name="DOI">
<xsl:apply-templates select="@* | node()"/>
</xsl:element>
</xsl:template>
</xsl:stylesheet>
我需要按數字順序在列表中的排序關鍵字 - 這是通過luxid表示:得分元素的外部文件內。然而,我有沒有工作。
預期輸出:
關鍵字「運動員」應該來之前在列表中的「個人價值」。
非常感謝亞伯!那是我需要的。 – user2093335