我正在处理一个基本上是字典的文件。我想要做的是只选择具有特定“域”的文章,并以不同的方式重新组织它们。 我的问题是,一切似乎都很好,除了我一遍又一遍地收到数百篇关于同一篇文章的文章,我不知道为什么! 你能帮我解开这个谜吗?
这是我的XSL:
<?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="yes" encoding="UTF-8"/>
<xsl:strip-space elements="*"/>
<xsl:template match="/">
<html>
<body>
<xsl:apply-templates/>
</body>
</html>
</xsl:template>
<xsl:template match="article">
<xsl:for-each select="//label">
<xsl:if test="./@type ='domain'">
<xsl:element name="article">
<xsl:element name="domaine">
<xsl:value-of select="./@value"/>
</xsl:element>
<xsl:element name="div">
<xsl:element name="h2">
<xsl:value-of select="ancestor::article/title"/>
</xsl:element>
<xsl:for-each select="ancestor::pos/descendant::pron">
<xsl:element name="p">
<xsl:value-of select="."/>
</xsl:element>
</xsl:for-each>
<xsl:for-each select="ancestor::pos//inflection">
<xsl:element name="p">
<xsl:text>Flexion : </xsl:text>
<xsl:value-of select="@form"/>
<xsl:text>; Prononciation : </xsl:text>
<xsl:value-of select="@prons"/>
</xsl:element>
</xsl:for-each>
</xsl:element>
<xsl:element name="div">
<xsl:element name="p">
<xsl:text>Définition : </xsl:text>
<xsl:value-of select="ancestor::definition/gloss/txt"/>
<xsl:for-each select="ancestor::pos//example/txt">
<xsl:text>
Exemple : </xsl:text>
<xsl:value-of select="."/>
</xsl:for-each>
</xsl:element>
</xsl:element>
</xsl:element>
</xsl:if>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
这是我的输入基本上看起来像(它只是一系列不同的文章):
<?xml-stylesheet type="text/xsl" href="sajous.xslt"?>
<split>
<article>
<title>aiguchi</title>
<pageId>471440</pageId>
<meta>
<category>u prononcés /u/ en français</category>
<category>ch prononcés /tʃ/ en français</category>
</meta>
<text>
<etymology>
<etym>
<xml>du japonais <foreignWord lang="ja" translit="aïguchi">合口</foreignWord>.</xml>
<txt>du japonais 合口 aïguchi.</txt>
</etym>
</etymology>
<pos type="nom" lemma="1" locution="0" gender="m" number="s">
<pronunciations>
<pron>aj.gu.tʃi</pron>
</pronunciations>
<paradigm>
<inflection form="aiguchi" gracePOS="Ncms" prons="aj.gu.tʃi"/>
</paradigm>
<definitions>
<definition>
<gloss>
<xml>Monture pour une lame de <innerLink ref="tanto">tanto</innerLink> plus épurée que la monture standard buke-zukuri, où le couteau n'a pas de garde et où le <innerLink ref="sageo">sageo</innerLink> est inexistant dans la majorité des cas.</xml>
<txt>Monture pour une lame de tanto plus épurée que la monture standard buke-zukuri, où le couteau n'a pas de garde et où le sageo est inexistant dans la majorité des cas.</txt>
</gloss>
</definition>
<definition>
<gloss>
<labels>
<label type="sem" value="métonymie"/>
<label type="domain" value="armes blanches"/>
</labels>
<xml><innerLink ref="tanto#fr">Tanto</innerLink> monté en aïguchi.</xml>
<txt>Tanto monté en aïguchi.</txt>
</gloss>
</definition>
</definitions>
<subsection type="alternativeForm">
<item>aikuchi</item>
</subsection>
</pos>
</text>
</article>
</split>
答案 0 :(得分:1)
当你匹配文章时:
<xsl:for-each select="//label">
然后循环遍历整个文档的标签,即所有文章的标签:
<xsl:for-each select=".//label">
但您只想要匹配文章的标签。因此写
false