내가 일하고있는 프로젝트에서 som XSLT 코드의 리팩토링에 관한 문제가 있습니다. XSLT 지금어떻게이 XSLT를 리펙토링 할 수 있습니까?
<pdf:sometext text="{$metadata/namespace:template
/namespace:template_collection
//namespace:option
[namespace:identificator
= $report_option_identifier]
/namespace:name}"/>
이 문제는 XSLT이 (slighty를 변경 네임 스페이스와 약간 변경 태그의 origianl XML의 새 버전) 이상의 노드에 충돌하도록 확장 될 필요가 있다는 점이다.
는이 코드를 내놓았다 :
<xsl:variable name="report_template_collection"
select="$metadata
/namespace:template
/namespace:template_collection
|
$metadata
/namespace2:templateV2
/namespace2:template_collectionV2" />
<xsl:variable name="current_report_option"
select="namespace:option | namespace2:optionV2" />
<xsl:variable name="incomplete_report_option_text"
select="$report_template_collection
//$current_report_option
[namespace:identificator
= $report_option_identifier]
/namespace:name"/>
<pdf:sometext text="{$incomplete_report_option_text}"/>
그러나 컴파일 할 때이 THS 오류와 함께 제공 :
는Unexpected token '$' in the expression. $report_template_collection// -->$<-- current_report_option[namespace:opt...
그래서 내 질문은 : 어떻게을 설명 할 수있는 XSLT를 리팩토링 수 있습니다 새로운 이름 (V2) 및 다른 네임 스페이스. 동일한 XSLT가 XML의 모든 버전 (이전 버전과 새 버전 모두)을 준수해야합니다.
미리 감사드립니다.
귀하의 질문이 지금처럼 확실히 대답 할 수없는 것입니다. 이 모든 변수의 목적은 무엇입니까? 다른 버전의 XML 입력을 언급했지만 아무 것도 표시하지 않습니다. 질문을 편집하고 다음을이 순서대로 표시 할 것을 권장합니다. 목표가 무엇인지, 무엇이 잘못되었는지, _full_, 문제가있는 최소한의 XSLT 스타일 시트, XML 입력 및 기대하는 XML 출력을 설명하는 문장. –
오류 메시지는'select' 속성 중 하나의 값이 XPath 표현식이 아니라는 것을 알려줍니다. 당신의 문제는 표현의 일부분입니다 ...'// $ current_report_option' ... - 오직 당신이 거기서 말하려고했던 것을 알고 있기 때문에 그것을 고칠 수 있습니다. –