2012-02-17 4 views
1

저는 xml을 가지고 있는데 XSL 파일을 사용하여 "title"에 정의 된 속성을 원합니다.xml 요소의 경로를 동적으로 가져옵니다.

나는 책

XML과

  • CD 책

    • 카탈로그 요소를 변경하는 경우에도 값을 검색 할

      :

      <catalog> 
          <cd> 
           <title att="abce" att2="false">Empire Burlesque</title> 
           <artist>Bob Dylan</artist> 
           <country>USA</country> 
           <company>Columbia</company> 
           <price>10.90</price> 
           <year>1985</year> 
          </cd> 
      </catalog> 
      

      나는이 방법을 시도 att 값을 얻으려면

      <xsl:variable name="outermostElementName" select="catalog/cd/title/attribute::att"/> 
      

      그러나이는이 XML 나는 그것이 genric되고 싶어

      어떤 방법이 있나요 특정입니까?

  • +0

    Librak : 현재 받아 들여지는 답변보다 일반적인 XSLT 솔루션을 사용하는 것이 좋습니다. –

    답변

    1

    현재 XSL을 감안할 때 : 변수, 당신이 다음에 더 일반적인

    <xsl:variable name="outermostElementName" select="catalog/*/title/@att" /> 
    

    또는

    <xsl:variable name="outermostElementName" select="//title/@att" /> 
    

    첫 번째 중 하나를 사용할 수 있다고 생각 가정 루트 요소는 항상 호출 카탈로그. 두 번째 노드는 조상 노드에 종속되지 않지만 XML의 모든 수준에서 이라는 제목 요소를 선택합니다.

    +0

    예 카탈로그, CD 및 제목이 없으면 도움이됩니다. 나는 책, 책 및 제목을 의미합니다 ... ?? 이걸 감지하는 방법은 ... – Librak

    0

    달성하고자하는 일반성은 XSLT 템플릿 패턴에 의해 제공됩니다.

    <xsl:template match="title/@att"> 
        <!-- Your processing here --> 
    </xsl:template> 
    

    expressiontitle/@att 속성을 선택하는 등한다는 <xsl:apply-templates select="expression"/> 지시가있을 때마다, 상기 템플릿이 속성 노드의 ptocessing 선정한다 :

    간단히 할 수있다.

    다른 외부 컨텍스트에 의존하지 않습니다.

    관련 문제