2013-11-14 2 views
3

Visual Basic에서는 특정 문자로 문자열을 나누는 Split() 함수가 있음을 기억합니다.구분 기호로 데이터 나누기

이제 XSLT에서 프로그래밍 중이며 비슷한 기능을 사용하고 싶습니다. 그러나 XSLT를 잘 모릅니다. Split()에 있지만, XSLT 유사한 기능을 사용하여 <ITA_LIGHT_NAME>에서 나무로

TARANTO 
<br /> 
Porto industriale esterno 
-Meda elastica 
-Meda elastica 
-Meda elastica 
<br /> 
Mar Grande 
-Porto industriale interno 
--Accesso al IV sporgente 
---All 341 
----Radice IV sporgente (Ant) 
----Circa 700 m a NNW dell'Ant(Post) 
<br /> 

: 내가보고 싶은

<SECTION_CONTENT_LIST_ITEM> 
    <NTC_LIGHTLISTPRODUCT> 
     <VICINITY>TARANTO</VICINITY> 
     <ITA_LIGHT_NAME>Porto industriale esterno;Meda elastica</ITA_LIGHT_NAME> 
    </NTC_LIGHTLISTPRODUCT> 
</SECTION_CONTENT_LIST_ITEM> 
<SECTION_CONTENT_LIST_ITEM> 
    <NTC_LIGHTLISTPRODUCT> 
     <VICINITY>TARANTO</VICINITY> 
     <ITA_LIGHT_NAME>Porto industriale esterno;Meda elastica</ITA_LIGHT_NAME> 
    </NTC_LIGHTLISTPRODUCT> 
</SECTION_CONTENT_LIST_ITEM> 
<SECTION_CONTENT_LIST_ITEM> 
    <NTC_LIGHTLISTPRODUCT> 
     <VICINITY>TARANTO</VICINITY> 
     <ITA_LIGHT_NAME>Porto industriale esterno;Meda elastica</ITA_LIGHT_NAME> 
    </NTC_LIGHTLISTPRODUCT> 
</SECTION_CONTENT_LIST_ITEM> 
<SECTION_CONTENT_LIST_ITEM> 
    <NTC_LIGHTLISTPRODUCT> 
     <VICINITY>TARANTO</VICINITY> 
     <ITA_LIGHT_NAME>MAR GRANDE;Porto industriale interno;Accesso al IV sporgente;All 341;Radice IV sporgente (Ant)</ITA_LIGHT_NAME> 
    </NTC_LIGHTLISTPRODUCT> 
</SECTION_CONTENT_LIST_ITEM> 
<SECTION_CONTENT_LIST_ITEM> 
    <NTC_LIGHTLISTPRODUCT> 
     <VICINITY>TARANTO</VICINITY> 
     <ITA_LIGHT_NAME>MAR GRANDE;Porto industriale interno;Accesso al IV sporgente;All 341;Circa 700 m a NNW dell'Ant(Post)</ITA_LIGHT_NAME> 
    </NTC_LIGHTLISTPRODUCT> 
</SECTION_CONTENT_LIST_ITEM> 

: 첨부 파일에서

나는 XML 코드를 넣습니다. 감사. 원하는 출력을 보면

+0

- 각 어린이가 필요합니다. - –

+0

입력 XML을 사용하면 매우 어렵습니다. 특히 XSLT를 잘 모르는 경우 더욱 그렇습니다. (XSLT에는'Split()'함수가 없습니다.) ** 1) ** XML에 대해 무엇을 할 수 있습니까? ** 2) ** XSLT 이외의 다른 언어가 옵션입니까? ** 3) ** XSLT를 사용해야한다면 XSLT 엔진 (이름과 버전)을 사용하고 있습니까? – Tomalak

+0

xslt 버전 1.0과 나는 다른 언어를 모릅니다. –

답변

0

, 그것은 마태 복음 그린 것 작품을 제안 템플릿을 작성, ... 아직

분할의 문제가 아닙니다. 그러나 Java에 액세스 할 수있는 경우 외부 Java 함수를 호출하면 훨씬 쉽게 처리 할 수 ​​있습니다.

public String splitString(String myStringToSplit, String delimiter) 
{ 
    String[] mySplittedString = myStringToSplit.split(delimiter); 
    String returnString = ""; 

    for(int i = 0; i < mySplittedString.length; i++) 
    { 
     returnString += mySplittedString[i] + "<br/>"; 
    } 

    return returnString; 
} 

그리고 XSLT에서

, 자바 네임 스페이스 선언 후 :

<xsl:value-of select="namespace:splitString('your;String;To;Split', ';')"/> 

이 XSLT 1.0과 완벽하게 호환입니다.

이제는 원하는 출력을 얻으려면 XSLT 용 알고리즘이 너무 복잡하기 때문에 전체 XML을 구문 분석하고 각 요소의 특정 문자로 구분 된 각 노드를 하나의 String으로 연결하여 나를 위해 나무를 돌려 줄 Java 함수. 이렇게하면 이미 존재하는 VICINITY 등을 확인하고 노드가 중복되지 않았는지 확인하는 것이 더 쉬울 것입니다.

관련 문제