2009-12-29 2 views
1

파이썬을 사용하여 DTD를 파싱하고 변환 할 수있는 라이브러리를 찾고 있습니다. 지금까지 내가 발견 한 유일한 것은 xmlproc이지만 고대의 것으로 보이며 DTD의 직렬화를 지원하지 않는 것 같습니다. Java 용 this이 있지만 파이썬 솔루션을 선호합니다.DTD를 파이썬으로 변환하기

편집 : 이상적으로는, 파이썬 구조의 일종으로 DTD를 구문 분석하는 구조에서 작동 한 후 DTD에 다시 결과를 기록 할 수 있도록하고 싶습니다 뜻의 DTD의 "직렬화"에 의해 .

+0

"DTD의 직렬화"? DTD가 텍스트가 아닌가? "DTD의 직렬화"란 무엇을 의미합니까? –

답변

0

DTD를위한 종단 간 프로세서에 대해 잘 모릅니다. 그러나 DTD를 전혀 사용하지 않는 경우가 많기 때문에 놀랄 일이 아닙니다.

Amara은 DTD를 구문 분석 할 수 있지만 액세스 할 수있는 수준 또는 결과를 직렬화 할 수 있는지 여부는 알 수 없습니다. 나는 그들이 할 수 있다고 생각하지만 현실에 기반하지는 않습니다. libxml2은 파이썬에서 lxml으로 사용 가능합니다. 조사할만한 것이 있지만 그 경험이 적습니다. libxml 문서에서 전체 DTD에 액세스 할 수있는 것으로 보입니다.

또 다른 가능성은 one of many programs으로 DTD를 XSD로 변환 한 다음 일반 XML 프로세서를 사용하여 트리를 조작하고 다시 DTD로 리턴하는 것입니다. 나는 얼마나 손실이 있을지 걱정한다.

난이도가 높아지면 DTD 문법에 대해 직접 파서를 작성하려면 PyParsing 또는 PLY을 고려하십시오.

0

DTD를 XML 기반 형식 중 하나로 변환하는 것이 좋습니다. 이 시점에서 ElementTree 또는 선호하는 XML 툴킷으로 처리 할 수 ​​있습니다.

나는 매우 간결하고 직관적 인 RelaxNG에 대한 좋은 경험을 가졌습니다. 자사의 사이트에 변환 도구의 목록이있다 : http://relaxng.org/#conversion

당신이 XML 스키마를 선호하는 경우가 여기에 볼 수있는 작업은 다음과 같습니다 http://www.w3.org/XML/Schema

타사 문서 또는 DTD를 처리하는 경우,이 당신을 위해 작동하지 않을 수 있습니다 . 사내에 있다면 사격을하십시오. XML 기반 스키마는 작업하기에 훨씬 더 즐겁습니다.