2010-04-02 4 views
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> 

내가XSLT를 작성하여 다음 XML을 다음 HTML로 변환하는 방법은 무엇입니까?

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

문제처럼 변환 할 바인딩 태그의 수는 다른 수 있습니다. 때로는 URI 또는 ​​ony 값만 가질 수 있습니다.

@ name = PropertyURI를 사용할 수 있는지 XSLT에서 어떻게 알 수 있습니까?
그렇다면 다음 바인딩 @name 속성의 이름은 무엇입니까?

+0

@stakx 감사합니다. 나는 지금 더 좋아 보인다. –

답변

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> 
+0

답장을 보내 주셔서 감사합니다. 나는 FrenchKiss로 그 중 하나를 테스트했습니다. 예, 괜찮습니다. 올바른 링크를 얻을 수 있습니다. 1. URI가 아니라 단지 리터럴 인 경우? 이 경우 속성 URI가 앵커/링크의 href와 텍스트로 모두 제공되기를 원합니다. Property 만 있지만 PropertyURI가없는 경우 링크 대신 간단한 텍스트로 변환됩니다. 2. ValueURI 및 Value는 무엇입니까? –

0

문제에 대한 설명과 원하는 출력이 관련이없는 것처럼 보이기 때문에 사용자가 찾고있는 것이 명확하지 않습니다. 나는 당신이하고 싶은 것은 uri 자녀와 함께 모든 binding 요소를 찾을 수있다이하는 literal 아이가 관련 binding 요소를 찾을 생각하고 a 요소를 채울 uriliteral 값을 사용 . uri 자녀와 함께 하나의 name 속성이 literal 아이, 예를 들어, 함께 하나의 name 속성으로 시작하기 때문에

이 템플릿은 두 binding 요소가 관련되어 있다고 가정 "PropertyURI"가 "속성"과 "ValueURI"로 시작 "값"로 시작 :

<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> 

관련 요소가 단순히 uri 자녀와 함께 한 후 다음binding 요소 위의 템플릿을 사용하는 경우, 로 변수 할당을 교체 :

<xsl:variable name="literal" select="following-sibling::binding[1]/literal"/> 
+0

오류가 발생했습니다. 속성 값은이 요소에 허용되지 않습니다.

+0

편집기에 약간의 문제가 있습니다. 같은 것을 다시 쓴 후에는 오류가 없습니다. –