2013-02-18 2 views
1

거대한 문자열을 분석하려고하는데 XSLT에서 두 개의 다른 메소드를 사용하고 있습니다 (하나는 tokenize이고 다른 하나는 analyze 문자열이라고합니다).XSLT는 string과 tokenazation을 적절히 분석합니다.

한다고 가정 나는 다음과 같은 문자열이 : 나는 각 데이터의 항목을 만들려고 해요로

var ActivitiesData = 
[{"method": {"name": "Bras", "val": "Vegas"}, 
"laundry": "-<a href=\"http://www.site.com\" target=\"_blank\">OnCase</a>: #9", 
"XSD": "true", 
"stages": [{"name": "on_site", "DB": "12", "OVL": true, "RVT: "BGD"}, {"name": "on_site", "DB": "12", "OVL": true, "RVT": true}], 
"NationalUsage": "Degree", 
"Overlay": 32, 
"Build_Tick": "12", 
"Mozilla": {"Cloud": "Visual", "Decrease": "10"}, 
"updates": "XXX", 
}] 

내 문제가 제기합니다. 내 REGEX는 다음과 같습니다 (., ', \ s + "'). 즉, a, '가 매치 할 때마다 한 데이터를 다른 데이터로 구별 할 수 있습니다. 나는 단계의 차일로를 만들 때

하지만, 나는 이러한 문자열이 단계 데이터에

(') 때문에 나는 개별 항목으로 그들을 만드는거야 -라는 특별한 아이템 요소를 생성 < stage-itmes >.

즉, 다음과 같은 문자로 시작하는 데이터를 볼 때만 "[{"(단계적으로)) 나는 나중에 텍스트를 다른 형식으로 다시 포맷하려고합니다. 이 토큰 화 문자열 (, ')을 사용하면이 문자열이 일치하지 않습니다.

나는 분명히 자신을 expalin 수 있었으면 좋겠어, 나는 그것을 할 잘못된 방법을 사용하고 있습니다. 내가 얻고 싶은 최종 결과는 다음과 같습니다

<item> 
    "method": {"name": "Bras", "val": "Vegas"}, 
</item> 
<item> 
    "laundry": "-<a href=\"http://www.site.com\" target=\"_blank\">OnCase</a>: #9", 
</item> 
<item> 
    "XSD": "true", 
</item> 
<item> 
    "stages": [{"name": "on_site", "DB": "12", "OVL": true, "RVT: "BGD"}, {"name": "on_site", "DB": "12", "OVL": true, "RVT": true}], 
</item> 


..and so on.. 

독특한 무언가 (') 문자열을 대체하기 위해이 단계 데이터를 잡으려고 노력하면서 내가 사용한 분석 문자열 즉 어떤 나중에하지 않습니다 내 토큰 화에 걸려 개별 요소를 만듭니다.

<xsl:variable name="pTokenize">  



<xsl:analyze-string select="normalize-space($activitiesDataText)" regex="(&quot;stages&quot;:[^\]]*)"> 
    <xsl:matching-substring> 
     <xsl:value-of select="replace(regex-group(1), ', &apos;', ',-&apos;')"/> 
    </xsl:matching-substring> 
    <xsl:non-matching-substring> 
     <xsl:value-of select="regex-group(1)"/> 
    </xsl:non-matching-substring> 
</xsl:analyze-string> 

</xsl:variable> 

대단히 고마워요!

답변

1

json.org에 설명 된대로 here json으로 문법 XSLT 2.0에서 완전히 작성된 파서을 찾을 수 있습니다 - 한번 시도 해봐.

1

예제 문자열을 제공했지만 사용자에게 문법을 표시하지 않았습니다. 이것은 JSON과 매우 비슷해 보입니다. 그렇다면 규칙적인 문법보다는 재귀 문법이기 때문에 정규 표현식을 사용하여 구문 분석 할 수 없습니다.

JSON을 XML로 변환하는 유틸리티가 많이 있습니다. 여기에는 XSLT에서 호출 할 수있는 유틸리티 (Saxon은 parse-json 확장 기능이 있음)가 포함됩니다. Dimitre Novatchev는 XSLT로 작성된 복잡한 파서의 예를 제공하고 Gunther Rademacher는 문법의 XML 설명에서 파서를 생성하는 도구 인 REX를 게시합니다.

필자가 오히려 새로운 방식으로 구문 분석하는 잘못된 방식을 시도하고 있기 때문에 오히려 의심 스럽습니다.이 경우 필자는 훨씬 더 진행하기 전에 주제를 읽는 것이 좋습니다. 이 전체 또는 공식 JSON 문법이 아니므로 파서 또는 데이터로 작업 maynot 수 -