xsl:检查两个字符串是否相等,如果为真则显示另一个字符串
xsl: check if both strings are equal, if true then display another string
我有第一个 TEI
内容用于 XSLT
你可以在这里找到 http://xsltfiddle.liberty-development.net/3Nqn5Y4/7
corpus_ilimilku.xml
中的第二个 TEI
,我需要在同一个 XSLT
文件中使用:
<category n="1" xml:id="contend" ana="#verb.competition">
<catDesc xml:lang="en">subcategory of competition verb: contend
<lang>
<ref n="1" target="http://babelnet.org">BabelNet<idno type="URI">http://live.babelnet.org/synset?word=bn:00083498v</idno></ref>
<ref n="2" target="https://framenet2.icsi.berkeley.edu/">FrameNet<idno type="URI">https://framenet2.icsi.berkeley.edu/fnReports/data/frameIndex.xml?frame=Attaching"></idno></ref>
</lang>
</catDesc>
<category ana="#transcription" xml:lang="uga">
<gloss n="1" xml:id="ḫṣb01" target="../uga/verb.xsl#ḫṣb"/>
<gloss n="2" xml:id="mḫṣ01" cert="high" target="../uga/verb.xsl#mḫṣ"/>
</category>
</category>
我没有问题可以参考正确的文件。我已经检查过了,它正在工作。
其实我有两个问题:
我认为 ref
中的 key
不起作用,
- 所以当我想显示
$value-doc2
的 href5
时,如果 "$value-doc = translate($re-ana2, '#', '')
为真,我得到以下消息:
Description: A sequence of more than one item is not allowed as the first argument of tokenize() (", "http://live.babelnet.org/synse...", "https://framenet2.icsi.berkeley.edu...")
目前,"$value-doc = translate($re-ana2, '#', '')
有效,因为我用几个值进行了测试,结果是 true
或 false
。查看每个 <li>
的最后一个字
我要展示的内容:
<h3>mḫṣ</h3><em>
mean.: </em>to figth, to destroy. Inflected forms attested:
<ul>
<li>tmtḫṣ: gram. → Gt. ind. imperf. trans, 2msg, 3fsg. <em>trans. </em>she fought -- remark(s): iterative function // with “<a href="../computation/corpus_ilimilku.xml#ktu1-3_ii_l6b_t%E1%B8%ABt%E1%B9%A3b">tḫtṣb</a>.” Occur.: <a href="">ktu1.3:ii:l5b-6a</a> -- <em>analysis: </em>suggestion of
<a href="../computation/corpus_ilimilku.xml#ktu1-3_ii_l5b_6a_int">hermeneutics;</a> taxo., subcat. of competition v. “<a href="../computation/corpus_ilimilku.xml#m%E1%B8%AB%E1%B9%A301">contend</a>.”
<!-- DATA THAT I CANNOT DISPLAY : --> <a href="http://live.babelnet.org/synset?word=bn:00083498v">BabelNet</a>, <a href="https://framenet2.icsi.berkeley.edu/fnReports/data/frameIndex.xml?frame=Attaching">Framework</a>
</li>
<li>tmḫṣ: gram. → D. ind. perf. trans, 2msg, 3fsg. <em>trans. </em>she destroyed -- remark(s):
Occur.: <a href="">ktu1.3:ii:l7</a> -- <em>analysis: </em>suggestion of <a href="../computation/corpus_ilimilku.xml#ktu1-3_ii_l7_int">hermeneutics;</a> taxo., subcat. of emotion's v. as a concept of “<a href="../computation/corpus_ilimilku.xml#m%E1%B8%AB%E1%B9%A302">humiliation</a>.”
<!-- DATA THAT I CANNOT DISPLAY : --> <a href="http://live.babelnet.org/synset?word=bn:00083498v">BabelNet</a>, <a href="https://framenet2.icsi.berkeley.edu/fnReports/data/frameIndex.xml?frame=Attaching">Framework</a>
</li>
</ul>
总结一下:如果@xml:id
of <gloss>
of second TEI
(corpus_ilimilku.xml
) = @ana[2]
of <re>
of current TEI
(在Fiddle内容中),然后显示属于gloss
相同父节点的每个ref
的idno @type URI
。
希望我的解释清楚。抱歉我的英语不好...
提前,谢谢。
如果行
<!-- DATA THAT I CANNOT DISPLAY : --> <a href="http://live.babelnet.org/synset?word=bn:00083498v">BabelNet</a>, <a href="https://framenet2.icsi.berkeley.edu/fnReports/data/frameIndex.xml?frame=Attaching">Framework</a>
是为了说明你要改造
document('../computation/corpus_ilimilku.xml')//lang/ref/idno
元素到 links 然后你想创建那些 links 的地方使用
<xsl:apply-templates select="document('../computation/corpus_ilimilku.xml')//lang/ref/idno"/>
然后写一个模板
<xsl:template match="idno">
<a href="{.}">
<xsl:value-of select="preceding-sibling::node()[1]"/>
</a>
</xsl:template>
产生那些 links(我不太确定 link 的内容,因为第一个 BabelNet
似乎如描述的那样,第二个是 FrameNet
与 Framework
).
至于在多个文档中使用键,键在每个文档的基础上工作,key
函数有一个可选的第三个参数,您可以指定它来搜索,例如 $doc2
使用上下文文档中的值与例如key('key-name', (key-value-or-values), $doc2)
.
我觉得你的口头描述
if @xml:id of of second TEI (corpus_ilimilku.xml) = @ana[2] of
of current TEI (in Fiddle content), then display idno @type URI
of each ref that belongs to same parent node of gloss
转换为密钥声明
<xsl:key name="gloss-ref" match="category[category/gloss]" use="category/gloss/@xml:id"/>
然后假设我们有一个全局变量 <xsl:variable name="doc2" select="doc('../computation/corpus_ilimilku.xml')"/>
我想你想使用 key 函数,例如
<xsl:apply-templates select="key('gloss-ref', $re-ana2, $doc2)//lang/ref/idno"/>
处理相关的 idno
元素。
我在@Martin 的大力支持下找到了解决方案。第一,我改第二个TEI
:
<category n="1" xml:id="humiliation" ana="#verb.emotion">
<catDesc >subcategory of emotion's verb as a concept of: humiliation
<term ana="#mḫṣ02 #ṣmt01" type="baseForm">
<ptr n="1" target="http://babelnet.org/synset?word=bn:00086117v" source="BabelNet" />
<ptr n="2" target="" source="WordNet" next="{01804206}" />
<ptr n="3" target="http://verbs.colorado.edu/propbank/framesets-english-aliases/humiliate.html" source="VerbNet" />
<ptr n="4" target="http://verbs.colorado.edu/html_groupings/wound-n.html" source="VerbNet" />
<ptr n="5" target="https://framenet2.icsi.berkeley.edu/fnReports/data/frameIndex.xml?frame=Stimulate_emotion" source="FrameNet" />
</term>
</catDesc>
<category ana="#verb.emotion #humiliation" xml:lang="uga">
<gloss n="1" xml:id="mḫṣ02" cert="high"/>
</category>
</category>
然后对于 XSL
,添加如下:
<xsl:param name="f2" select="'../computation/corpus_ilimilku.xml'"/>
<!-- key to look for @xml:id of <gloss> within TEI -->
<xsl:key name="gloss-ref" match="category[category/gloss]" use="category/gloss/@xml:id"/>
<!-- variable for "f2" -->
<xsl:variable name="doc2" select="document($f2)"/>
<!-- within template match="entryFree" and <ul><li> -->
<xsl:apply-templates select="key('gloss-ref', translate($re-ana2, '#', ''), $doc2)//term/ptr[@target]"/>
<!-- template to display <xsl:apply-templates> -->
<xsl:template match="ptr">
<xsl:variable name="href-ptr-target" select="@target"/>
<a href="{$href-ptr-target}">
<xsl:value-of select="@source"/>
<xsl:if test="@next">
<xsl:value-of select="@next"/>
</xsl:if>
<xsl:choose> <xsl:when test="position() != last()">
<xsl:text>, </xsl:text> </xsl:when>
<xsl:otherwise><xsl:text>. </xsl:text></xsl:otherwise>
</xsl:choose></a>
</xsl:template>
结果,根据Fiddlehttp://xsltfiddle.liberty-development.net/3Nqn5Y4/9,新XSL
(Fiddle中<!-- -->
之间),第二个TEI
内容:
<ul>
<li>tmḫṣ: gram. → D. ind. perf. trans, 2msg, 3fsg. <em>trans. </em>she destroyed -- remark(s): Occur.: <a href="">ktu1.3:ii:l7</a> -- <em>analysis: </em>suggestion of <a href="../computation/corpus_ilimilku.xml#ktu1-3_ii_l7_int">hermeneutics;</a> taxo., subcat. of emotion's v. as a concept of “<a href="../computation/corpus_ilimilku.xml#m%E1%B8%AB%E1%B9%A302">humiliation</a>.” Related to: <a href="http://babelnet.org/synset?word=bn:00086117v">BabelNet, </a><a href="">WordNet{01804206}, </a><a href="http://verbs.colorado.edu/propbank/framesets-english-aliases/humiliate.html">VerbNet, </a><a href="http://verbs.colorado.edu/html_groupings/wound-n.html">VerbNet, </a><a href="https://framenet2.icsi.berkeley.edu/fnReports/data/frameIndex.xml?frame=Stimulate_emotion">FrameNet.</a></li>
</ul>
我有第一个 TEI
内容用于 XSLT
你可以在这里找到 http://xsltfiddle.liberty-development.net/3Nqn5Y4/7
corpus_ilimilku.xml
中的第二个 TEI
,我需要在同一个 XSLT
文件中使用:
<category n="1" xml:id="contend" ana="#verb.competition">
<catDesc xml:lang="en">subcategory of competition verb: contend
<lang>
<ref n="1" target="http://babelnet.org">BabelNet<idno type="URI">http://live.babelnet.org/synset?word=bn:00083498v</idno></ref>
<ref n="2" target="https://framenet2.icsi.berkeley.edu/">FrameNet<idno type="URI">https://framenet2.icsi.berkeley.edu/fnReports/data/frameIndex.xml?frame=Attaching"></idno></ref>
</lang>
</catDesc>
<category ana="#transcription" xml:lang="uga">
<gloss n="1" xml:id="ḫṣb01" target="../uga/verb.xsl#ḫṣb"/>
<gloss n="2" xml:id="mḫṣ01" cert="high" target="../uga/verb.xsl#mḫṣ"/>
</category>
</category>
我没有问题可以参考正确的文件。我已经检查过了,它正在工作。
其实我有两个问题:
-
我认为
key
不起作用,- 所以当我想显示
$value-doc2
的href5
时,如果"$value-doc = translate($re-ana2, '#', '')
为真,我得到以下消息:
ref
中的 Description: A sequence of more than one item is not allowed as the first argument of tokenize() (", "http://live.babelnet.org/synse...", "https://framenet2.icsi.berkeley.edu...")
目前,"$value-doc = translate($re-ana2, '#', '')
有效,因为我用几个值进行了测试,结果是 true
或 false
。查看每个 <li>
我要展示的内容:
<h3>mḫṣ</h3><em>
mean.: </em>to figth, to destroy. Inflected forms attested:
<ul>
<li>tmtḫṣ: gram. → Gt. ind. imperf. trans, 2msg, 3fsg. <em>trans. </em>she fought -- remark(s): iterative function // with “<a href="../computation/corpus_ilimilku.xml#ktu1-3_ii_l6b_t%E1%B8%ABt%E1%B9%A3b">tḫtṣb</a>.” Occur.: <a href="">ktu1.3:ii:l5b-6a</a> -- <em>analysis: </em>suggestion of
<a href="../computation/corpus_ilimilku.xml#ktu1-3_ii_l5b_6a_int">hermeneutics;</a> taxo., subcat. of competition v. “<a href="../computation/corpus_ilimilku.xml#m%E1%B8%AB%E1%B9%A301">contend</a>.”
<!-- DATA THAT I CANNOT DISPLAY : --> <a href="http://live.babelnet.org/synset?word=bn:00083498v">BabelNet</a>, <a href="https://framenet2.icsi.berkeley.edu/fnReports/data/frameIndex.xml?frame=Attaching">Framework</a>
</li>
<li>tmḫṣ: gram. → D. ind. perf. trans, 2msg, 3fsg. <em>trans. </em>she destroyed -- remark(s):
Occur.: <a href="">ktu1.3:ii:l7</a> -- <em>analysis: </em>suggestion of <a href="../computation/corpus_ilimilku.xml#ktu1-3_ii_l7_int">hermeneutics;</a> taxo., subcat. of emotion's v. as a concept of “<a href="../computation/corpus_ilimilku.xml#m%E1%B8%AB%E1%B9%A302">humiliation</a>.”
<!-- DATA THAT I CANNOT DISPLAY : --> <a href="http://live.babelnet.org/synset?word=bn:00083498v">BabelNet</a>, <a href="https://framenet2.icsi.berkeley.edu/fnReports/data/frameIndex.xml?frame=Attaching">Framework</a>
</li>
</ul>
总结一下:如果@xml:id
of <gloss>
of second TEI
(corpus_ilimilku.xml
) = @ana[2]
of <re>
of current TEI
(在Fiddle内容中),然后显示属于gloss
相同父节点的每个ref
的idno @type URI
。
希望我的解释清楚。抱歉我的英语不好...
提前,谢谢。
如果行
<!-- DATA THAT I CANNOT DISPLAY : --> <a href="http://live.babelnet.org/synset?word=bn:00083498v">BabelNet</a>, <a href="https://framenet2.icsi.berkeley.edu/fnReports/data/frameIndex.xml?frame=Attaching">Framework</a>
是为了说明你要改造
document('../computation/corpus_ilimilku.xml')//lang/ref/idno
元素到 links 然后你想创建那些 links 的地方使用
<xsl:apply-templates select="document('../computation/corpus_ilimilku.xml')//lang/ref/idno"/>
然后写一个模板
<xsl:template match="idno">
<a href="{.}">
<xsl:value-of select="preceding-sibling::node()[1]"/>
</a>
</xsl:template>
产生那些 links(我不太确定 link 的内容,因为第一个 BabelNet
似乎如描述的那样,第二个是 FrameNet
与 Framework
).
至于在多个文档中使用键,键在每个文档的基础上工作,key
函数有一个可选的第三个参数,您可以指定它来搜索,例如 $doc2
使用上下文文档中的值与例如key('key-name', (key-value-or-values), $doc2)
.
我觉得你的口头描述
if @xml:id of of second TEI (corpus_ilimilku.xml) = @ana[2] of of current TEI (in Fiddle content), then display idno @type URI of each ref that belongs to same parent node of gloss
转换为密钥声明
<xsl:key name="gloss-ref" match="category[category/gloss]" use="category/gloss/@xml:id"/>
然后假设我们有一个全局变量 <xsl:variable name="doc2" select="doc('../computation/corpus_ilimilku.xml')"/>
我想你想使用 key 函数,例如
<xsl:apply-templates select="key('gloss-ref', $re-ana2, $doc2)//lang/ref/idno"/>
处理相关的 idno
元素。
我在@Martin 的大力支持下找到了解决方案。第一,我改第二个TEI
:
<category n="1" xml:id="humiliation" ana="#verb.emotion">
<catDesc >subcategory of emotion's verb as a concept of: humiliation
<term ana="#mḫṣ02 #ṣmt01" type="baseForm">
<ptr n="1" target="http://babelnet.org/synset?word=bn:00086117v" source="BabelNet" />
<ptr n="2" target="" source="WordNet" next="{01804206}" />
<ptr n="3" target="http://verbs.colorado.edu/propbank/framesets-english-aliases/humiliate.html" source="VerbNet" />
<ptr n="4" target="http://verbs.colorado.edu/html_groupings/wound-n.html" source="VerbNet" />
<ptr n="5" target="https://framenet2.icsi.berkeley.edu/fnReports/data/frameIndex.xml?frame=Stimulate_emotion" source="FrameNet" />
</term>
</catDesc>
<category ana="#verb.emotion #humiliation" xml:lang="uga">
<gloss n="1" xml:id="mḫṣ02" cert="high"/>
</category>
</category>
然后对于 XSL
,添加如下:
<xsl:param name="f2" select="'../computation/corpus_ilimilku.xml'"/>
<!-- key to look for @xml:id of <gloss> within TEI -->
<xsl:key name="gloss-ref" match="category[category/gloss]" use="category/gloss/@xml:id"/>
<!-- variable for "f2" -->
<xsl:variable name="doc2" select="document($f2)"/>
<!-- within template match="entryFree" and <ul><li> -->
<xsl:apply-templates select="key('gloss-ref', translate($re-ana2, '#', ''), $doc2)//term/ptr[@target]"/>
<!-- template to display <xsl:apply-templates> -->
<xsl:template match="ptr">
<xsl:variable name="href-ptr-target" select="@target"/>
<a href="{$href-ptr-target}">
<xsl:value-of select="@source"/>
<xsl:if test="@next">
<xsl:value-of select="@next"/>
</xsl:if>
<xsl:choose> <xsl:when test="position() != last()">
<xsl:text>, </xsl:text> </xsl:when>
<xsl:otherwise><xsl:text>. </xsl:text></xsl:otherwise>
</xsl:choose></a>
</xsl:template>
结果,根据Fiddlehttp://xsltfiddle.liberty-development.net/3Nqn5Y4/9,新XSL
(Fiddle中<!-- -->
之间),第二个TEI
内容:
<ul>
<li>tmḫṣ: gram. → D. ind. perf. trans, 2msg, 3fsg. <em>trans. </em>she destroyed -- remark(s): Occur.: <a href="">ktu1.3:ii:l7</a> -- <em>analysis: </em>suggestion of <a href="../computation/corpus_ilimilku.xml#ktu1-3_ii_l7_int">hermeneutics;</a> taxo., subcat. of emotion's v. as a concept of “<a href="../computation/corpus_ilimilku.xml#m%E1%B8%AB%E1%B9%A302">humiliation</a>.” Related to: <a href="http://babelnet.org/synset?word=bn:00086117v">BabelNet, </a><a href="">WordNet{01804206}, </a><a href="http://verbs.colorado.edu/propbank/framesets-english-aliases/humiliate.html">VerbNet, </a><a href="http://verbs.colorado.edu/html_groupings/wound-n.html">VerbNet, </a><a href="https://framenet2.icsi.berkeley.edu/fnReports/data/frameIndex.xml?frame=Stimulate_emotion">FrameNet.</a></li>
</ul>