2012-12-12 2 views
1

XSL 1.0 스타일 시트에 전역 변수를 만드는 데 문제가 있습니다. 변환하려는 XML에있는 XML 태그의 값에서 변수를 만들고 싶습니다.XML의 특정 태그에서 XSL의 전역 변수를 생성하십시오.

<?xml version="1.0" encoding="UTF-8" standalone="no"?> 

<config name="test report" xmlns="http://www.example.com/CONFIG"> 

    <the_one_i_want>1000</the_one_i_want> 

    <!-- lots of other stuff --> 

</config> 

그리고 여기처럼 내 XSL이 모습입니다 : : 그래서 variable_from_xml1000의 값을 가질 것으로 기대

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

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

    <xsl:output method="html"/> 

    <xsl:variable name="normal_global_variable">100</xsl:variable><!-- This works fine --> 
    <xsl:variable name="variable_from_xml"><xsl:value-of select="/config/the_one_i_want/value"/></xsl:variable><!-- This does not work --> 

    <!-- lots of other stuff --> 

</xsl:stylesheet> 

하지만, 그렇지 않은 여기 내 XML의 모습입니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?

P.the_one_i_want이라는 XML 태그는 고유하며 XML에 한 번만 나타납니다.

답변

3

문제는 네임 스페이스 중 하나입니다. 뒤에있는 <the_one_i_want> 요소는 http://www.example.com/CONFIG 네임 스페이스 (이미 XSLT에 정의되어 있음)에 바인딩됩니다. 더 간단하게,

<xsl:variable name="variable_from_xml" select="/CONFIG:config/CONFIG:the_one_i_want"/> 

또는 : 여기에

<xsl:variable name="variable_from_xml"> 
    <xsl:value-of select="/config/the_one_i_want/value"/> 
</xsl:variable> 

을 :

따라서

, 단순히이 변경

<xsl:variable name="variable_from_xml" select="/*/CONFIG:the_one_i_want"/> 
+0

을 시도하지 않았나요 처음 솔루션 이었지만 두 번째 솔루션은 훌륭하게 작동했습니다. 감사! – ubiquibacon

관련 문제