2012-03-22 2 views
0

XSLT를 사용하여 Relax NG XML을 변환 할 수 있는지 여부를 알고 싶습니다. 튜토리얼 좀주세요.XSLT에서 Relax NG xml을 읽을 수 있습니까?

나는 NG는 XML의 문법을 표현하기위한 언어입니다 휴식을 취 <xsl:template match="grammar">

<grammar> 

    <start> 
    <element name="html"> 
     <zeroOrMore> 
     <ref name="section"/> 
     </zeroOrMore> 
    </element> 
    </start> 

    <define name="section"> 
    <element name="div"> 
     <attribute name="class"><value>section</value></attribute> 
     <zeroOrMore> 
     <element name="para"> 
      <text/> 
     </element> 
     </zeroOrMore> 
     <zeroOrMore> 
     <ref name="subsection"/> 
     </zeroOrMore> 
    </element> 
    </define> 



</grammar> 

답변

3

와 함께 아래의 RelaxNG 스키마의 문법 태그를 일치시킬 수하지 않는 것. W3C XML Schema 또한 이와 같은 언어입니다. 그러나 XSLT는 XML을 다른 데이터 형식으로 변환하는 언어입니다. 다른 말로하면, 그들은 다른 근거를 다룬다. Relax NG를 XSLT로 변환하겠습니까?

Relax NG homepage에서 Relax NG, DTD 또는 XML 스키마를 서로주고 받거나 변환하는 데 사용할 수있는 XSLT를 많이 찾을 수 있습니다.

그냥 추측 : 실제로 Relax NG 스키마로 기존 XML의 유효성을 검사하는 도구 일 수 있습니다. 너는 any one of the validators으로 할 수있다.

마지막으로 작성한 댓글을 기반으로 편집하십시오. xsl:template이 맞지 않는 이유는 RelaxNG 네임 스페이스를 지정하지 않았기 때문일 가능성이 큽니다. 어떤 코드도 보여주지 않았지만 다음과 같은 것을 스타일 시트에 적용 해보십시오 (네임 스페이스 접두사는 중요하지 않으며 소스 XML 문서에있을 필요가 없습니다.).

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    xmlns:ng="http://relaxng.org/ns/structure/1.0"> 

    <xsl:template match="ng:grammar"> 
     <xsl:text>Grammar found!</xsl:text> 
    </xsl:template> 
</xsl:stylesheet> 
+0

네, Relax NG를 XSLT로만 변환 하시겠습니까? – user1283110

+0

@ user1283110 _ "xslt에서 읽을 수있는 구문 유형이 있습니까?"이 새로운 "_"샘플을 제공하여 XSLT로 모든 XML을 읽고 변환 할 수 있습니다. NG _is_ XML을 완화하면 XSLT로 읽을 수 있습니다. 그러나 Relax NG를 XSLT로 변환 할 수는 없습니다. 다른 동물 (즉, 유효성 확인 용, 변형 용)입니다. 기술적으로 XSLT에 유효성 검사기를 작성할 수 있지만, 존재하는 경우에는이를 알지 못합니다. 주변에는 많은 유효성 검사기가 있으므로 필요성을 느끼지 못합니다. – Abel

+0

@ Abel하지만 xslt 에서 문법 태그를 얻지 못했습니다. 일부 이름 공간을 가지고있는 문법 태그에서 일치하지 않습니다. – user1283110

1

Relax NG 스키마를 스키마에 의해 암시 된 유효성 검사를 수행하는 XSLT 스타일 시트로 컴파일 할 수 있습니까?

대답은 네가 이론적으로, (a) BNF 문법을 유한 상태 오토 마톤으로 변환하는 방법과 (b) 유한 타입 오토 마톤으로 변환하는 방법의 컴퓨터 과학 이론을 잘 이해하고 있다면 이론적으로 할 수있다. 상태 기계적인 기능을 프로그래밍 언어로합니다.

어쨌든, 나는 이것이 당신이하고 싶었던 것이라면 당신이했던 방식대로 질문하지 않았을 것이라고 생각합니다.

+0

죄송합니다 다음에이 실수를 수정합니다. – user1283110