使用XPATH匹配XSLT 1属性中的URL-Pattern

时间:2016-09-28 14:05:28

标签: xpath uri xslt-1.0

拥有这条RDF / XML(不能改变它......):

<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:cel="http://namespaces.semaworx.org/content#" xmlns:dct="http://purl.org/dc/terms/" xmlns:i18n21="http://apache.org/cocoon/i18n/2.1">
<cel:page>
<dct:hasPart>
  <cel:Element rdf:about="http://resources.semaworx.eu/content/element/start_navigation_home">
    <cel:hasStructureI18n rdf:parseType="Literal"><i18n21:translate><i18n21:text key="start_navigation_home">Start</i18n21:text></i18n21:translate></cel:hasStructureI18n>
    <i18n21:key>TheI18nKey</i18n21:key>
  </cel:Element>
</dct:hasPart>
</cel:page>
</rdf:RDF>

现在我需要XSLT模板匹配特定的“i18n21:key” - 基于“cel:Element”的“rdf:about”属性中的URI的元素。

到目前为止最好的方法就是这样 “CEL:元素[含有(@rdf:大约, '元件/ start_navigation_home')] / i18n21:键”

所以这是XSLT的摘录:

<xsl:template match="dct:hasPart" mode="layoutject_navigationMain_top">
<header id="navbar">
    <nav>
        <xsl:if test="$device != 'phone'">
            <xsl:apply-templates select="cel:Element" mode="layoutject_languageSwitch"/>
            <xsl:apply-templates select="cel:Element" mode="layoutject_navigationMain_inlineContent"/>
        </xsl:if>
    </nav>  
</header>
</xsl:template>

<xsl:template match="cel:Element" mode="layoutject_navigationMain_inlineContent">
<ul id="main">
    <xsl:apply-templates select="cel:Element[contains(@rdf:about,'urbanHOTBED/element/start_navigation_home')]/i18n21:key" mode="layoutject_navigationMain_singleItem" />
</ul>
</xsl:template>

<xsl:template match="cel:Element[contains(@rdf:about,'element/start_navigation_home')]/i18n21:key" mode="layoutject_navigationMain_singleItem">
<li class="ff">
    <a href="/" title="back to Homepage" i18n21:attr="href title" class="nav_start">
        <xsl:value-of select="cel:Element[contains(@rdf:about,'element/start_navigation_home')]/i18n21:key"/>
    </a>
</li>
</xsl:template>

这只是 last 模板,与预期不符。

到目前为止,我已尝试在“apply-templates”子句中不那么具体,以及匹配完整的URI而不是使用“contains”。

0 个答案:

没有答案