0
<result>  
   <binding name="PropertyURI">
      <uri>http://dbpedia.org/ontology/motto</uri>
   </binding> 
   <binding name="Property">
      <literal xml:lang="en">motto</literal>
   </binding>
   <binding name="ValueURI">
      <uri>http://dbpedia.org/ontology/motto</uri>
   </binding>
   <binding name="Value">
      <literal>Ittehad, Tanzim, Yaqeen-e-Muhkam(Urdu)</literal>
   </binding>
</result>

私はそれを次のように変換したい

<a href=PropertyURI>Property</a>
<a href=ValueURI>Value</a>

問題は、バインド タグの数が異なる可能性があることです。場合によっては、URI のみまたは値のみを持つことがあります。

@name=PropertyURI とのバインディングが利用可能かどうかを XSLT で知るにはどうすればよいですか?
はいの場合、次のバインディング @name 属性の名前は何ですか?

4

2 に答える 2

1

有効と思われる回答が既にありますが、次のコードのテストに 10 分を費やしただけです。

<?xml version="1.0" encoding="utf-8"?>

<xsl:stylesheet version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/">
  <xsl:apply-templates select="/result/binding[@name='PropertyURI']"/>
</xsl:template>
  <xsl:template match="binding">
    <a>
      <xsl:attribute name="href">
        <xsl:value-of select="./uri"/>
      </xsl:attribute>
      <xsl:value-of select="./following-sibling::binding[1][@name='Property']/literal"/>
    </a>
  </xsl:template>
</xsl:stylesheet> 
于 2010-04-02T08:17:36.047 に答える
0

問題の説明と目的の出力が関連していないように見えるため、探しているものは明確ではありません。あなたがしたいことは、子を持つすべての要素を見つけ、子を持つ関連要素を見つけ、および値を使用して要素を設定することだと思いますbindinguribindingliteraluriliterala

このテンプレートは、子を持つ要素の属性が子を持つ要素の属性で始まるbindingため、2 つの要素が関連していると想定します。たとえば、"PropertyURI" は "Property" で始まり、"ValueURI" は "Value" で始まります。nameurinameliteral

<xsl:template match="binding[uri]">
   <xsl:variable name="name" value="@name"/>
   <xsl:variable name="literal" 
                select="/result/binding[starts-with($name, @name)]/literal"/>
   <xsl:if test="$literal">
      <a href="{uri}">
         <xsl:value-of select="$literal"/>
      </a>
   </xsl:if>
</xsl:template>

関連する要素が単に子を持つ要素の次の binding要素であるuri場合は、上記のテンプレートを使用して、変数の割り当てを次のように置き換えます。

<xsl:variable name="literal" select="following-sibling::binding[1]/literal"/>
于 2010-04-02T07:56:57.610 に答える