2014-04-02 2 views
0

일부 노드를 출력하고 싶습니다. 그 중 일부는 대상 노드로 정의됩니다. 일부는 소스 노드입니다.XSLT : 노드 ID 정의

입력 내가 뭔가를 모든 노드를 출력 할 수있는이

<source node id="{generate-id()}"/> 
<target node id="{generate-id()}"/> 

을 시도

<?xml version="1.0" encoding="UTF-8"?> 
<Element type="node" id="Node-a" name="a"/> 
<Element type="node" id="Node-b" name="b"/> 
<Element type="node" id="Node-c" name="c"/> 
...... 

먼저 같다. 하지만 문제는 이중 노드가 있다는 것입니다. 나는 결과가있을 경우에만 출력 두 개의 노드를 발견 한 후

그래서 나는, 그러나이

<source node id="{generate-id(@source)}"/> 
<target node id="{generate-id(@target)}"/> 

같은 시도했다.

어떻게 올바른 노드 ID를 정의 할 수 있는지 물어보고 싶습니다. 그런 다음이를 구분할 수 있습니다. 또는 몇 가지 변수를 정의해야합니까? 도와주세요. 감사.

+0

무엇 귀하의 의견이 생겼 내가 좋은 입력 문서를 해달라고 때문에, 나는 샘플을 만들어? – PhillyNJ

+0

헤이 필, 좋아해. – Kathi

+2

"* 일부는 대상 노드로 정의되고 일부는 원본 노드입니다. *"이 정의가 정확히 어디에 있습니까? –

답변

0

첫째,

이 유효하지 않습니다

<source node id="{generate-id()}"/> 

속성 node에 값이 있어야합니다.

질문에 대답하기 위해 target 요소에 generate-idposition() 함수를 사용하여 고유 ID를 얻습니다. 이 같은.

<data> 
    <Element type="node" id="Node-a" name="a"/> 
    <Element type="node" id="Node-b" name="b"/> 
    <Element type="node" id="Node-c" name="c"/> 
</data> 

XSLT :

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format"> 
    <xsl:output method="html" indent="yes"/> 
    <xsl:template match="/"> 
     <xsl:for-each select="data"> 
      <xsl:copy> 
       <xsl:apply-templates/> 
      </xsl:copy> 
     </xsl:for-each> 
    </xsl:template> 
    <xsl:template match="Element"> 
     <xsl:element name="source"> 
      <xsl:attribute name="node"> 
       <xsl:value-of select="@type"/> 
      </xsl:attribute> 
      <xsl:attribute name="id"> 
       <xsl:value-of select="generate-id(.)"/> 
      </xsl:attribute> 
     </xsl:element> 
     <xsl:element name="target"> 
      <xsl:attribute name="node"> 
       <xsl:value-of select="@type"/> 
      </xsl:attribute> 
      <xsl:attribute name="id"> 
       <xsl:value-of select="concat(generate-id(.), '-', position())"/> 
      </xsl:attribute> 
     </xsl:element> 
    </xsl:template> 
</xsl:stylesheet> 
+0

고마워, 필. – Kathi