2014-03-26 4 views
1

<page-sequences>이 여러 개인 xsl-fo 문서가 있습니다. 매초마다 <page-sequences> 요소의 속성은 id="end"입니다. 이 ID를 ref-id="end"으로 참조하면 검색되는 요소를 어떻게 알 수 있습니까? 해당 ID를 가진 다음 요소를 참조 할 수 있습니까?XSLT + XPath : id 및 id-ref 특성 사용

예 (내 질문은 코멘트에서 다시 볼 수 있습니다) : 나는 그것을 받아 들일 수 있도록

<fo:page-sequence id="end"> 
........... 
</fo:page-sequence> 

<fo:page-sequence> 
........... 
    <fo:page-number-citation-last ref-id="end"/> 
    <!-- unfortunately, the previous element having id="ref" has been thus referenced --> 
    <!-- how could I reference the next element? --> 
........... 
</fo:page-sequence> 

<fo:page-sequence id="end"> 
........... 
</fo:page-sequence> 
+1

ID는 항상 고유해야합니다. 즉 ID의 포인트입니다. 'generate-id()'를 사용하여 ID가 ​​변경되지 않았는지 확인하십시오. –

+0

예, 이미 해당 솔루션을 발견하고 작동합니다. 이 질문을 받아 들일 수 있도록 대답으로 써주시겠습니까? – user1414745

답변

1

당신은 (모두 내 질문에) 대답으로이 쓰기 주시겠습니까?

확실히. XSL-FO의 특정 요소를 언급하기위한 전제 조건은 명확하게 을 식별 할 수있는 수단이 있다는 것입니다.. 이를 수행하는 가장 좋은 방법은 확인하려는 요소에 ID 속성을 사용하는 것입니다.

ID는 임의의 영문자 시퀀스와 _으로 구성되어야합니다. 즉, 해당 값은 유효한 NCName이어야합니다 (the specification here 참조).

각 ID는 직접 입력 할 수 있지만 일반적으로 xsl:generate-id() (XSLT가 아닌 XSLT의 기능)으로 이루어집니다. generate-id()은 ID가 문서 전체에서 고유하도록 자동으로 보장합니다.

generate-id()은 실제로 현재 템플릿 일치 또는 xsl:for-each의 반복에서 처리되는 노드에 대한 ID를 생성합니다.

XML의 모든 요소에 ID를 넣을 수 있으며 ID로 항목을 참조하는 것은 XSL-FO의 모든 요소에서 가능합니다.