lxml을 사용하여 XML 문서를 구문 분석 할 때 외부 카탈로그 파일을 사용하여 해당 DTD에 대해 해당 문서를 확인하는 방법이 있습니까? 문서의 DTD에 정의 된 고정 속성을 사용할 수 있어야합니다.Python의 lxml에서 XML 카탈로그를 사용하고 있습니까?
7
A
답변
1
예를 들려 줄 수 있습니까? lxml validation docs에 따르면 lxml은 생각할 수있는 대부분의 경우를 다루는 DTD 유효성 검사 (XML 문서 또는 외부 코드로 지정) 및 시스템 카탈로그를 처리 할 수 있습니다.
f = StringIO("<!ELEMENT b EMPTY>")
dtd = etree.DTD(f)
dtd = etree.DTD(external_id = "-//OASIS//DTD DocBook XML V4.2//EN")
0
소스는 오류 처리에 대한 몇 가지 # 정의 변합니다 grepping이 libxml2를 기능을 노출하지 않는 LXML 보인다 다음 catalog implementation in libxml2 page에서
C:\Dev>grep -ir --include=*.px[id] catalog lxml-2.1.1/src | sed -r "s/\s+/ /g"
lxml-2.1.1/src/lxml/dtd.pxi: catalog.
lxml-2.1.1/src/lxml/xmlerror.pxd: XML_FROM_CATALOG = 20 # The Catalog module
lxml-2.1.1/src/lxml/xmlerror.pxd: XML_WAR_CATALOG_PI = 93 # 93
lxml-2.1.1/src/lxml/xmlerror.pxd: XML_CATALOG_MISSING_ATTR = 1650
lxml-2.1.1/src/lxml/xmlerror.pxd: XML_CATALOG_ENTRY_BROKEN = 1651 # 1651
lxml-2.1.1/src/lxml/xmlerror.pxd: XML_CATALOG_PREFER_VALUE = 1652 # 1652
lxml-2.1.1/src/lxml/xmlerror.pxd: XML_CATALOG_NOT_CATALOG = 1653 # 1653
lxml-2.1.1/src/lxml/xmlerror.pxd: XML_CATALOG_RECURSION = 1654 # 1654
lxml-2.1.1/src/lxml/xmlerror.pxi:CATALOG=20
lxml-2.1.1/src/lxml/xmlerror.pxi:WAR_CATALOG_PI=93
lxml-2.1.1/src/lxml/xmlerror.pxi:CATALOG_MISSING_ATTR=1650
lxml-2.1.1/src/lxml/xmlerror.pxi:CATALOG_ENTRY_BROKEN=1651
lxml-2.1.1/src/lxml/xmlerror.pxi:CATALOG_PREFER_VALUE=1652
lxml-2.1.1/src/lxml/xmlerror.pxi:CATALOG_NOT_CATALOG=1653
lxml-2.1.1/src/lxml/xmlerror.pxi:CATALOG_RECURSION=1654
이 가능한 것을 그 '투명'/etc/xml/catalog에서의 설치를 통한 핸들링은 lxml에서 여전히 작동 할 수 있지만 그 이상이 필요한 경우 lxml을 포기하고 카탈로그 함수를 노출시키는 기본 파이썬 바인딩을 사용할 수 있습니다.
6
당신은 XML_CATALOG_FILES
환경 변수에 카탈로그를 추가 할 수 있습니다
os.environ['XML_CATALOG_FILES'] = 'file:///to/my/catalog.xml'
이 this thread를 참조하십시오. XML_CATALOG_FILES
의 항목은 공백으로 구분 된 URL입니다. 파이썬의 pathname2url
과 urljoin
(file:
)을 사용하여 경로 이름에서 URL을 생성 할 수 있습니다.
관련 문제
- 1. Python의 scipy 오류에서 stats 패키지를 사용하고 있습니까?
- 2. Python의 XML GUI
- 3. lxml에서 find/findall과 함께 xml 네임 스페이스를 사용하려면 어떻게해야합니까?
- 4. pdf로 제품 카탈로그를 만드는 방법
- 5. Sarissa는 기존 XML 문서 객체를 사용하고 있습니까?
- 6. LXML에서 정의되지 않은 네임 스페이스 접두어를 무시하는 스위치가 있습니까?
- 7. 런타임시 Unity 카탈로그를 확장하려면 어떻게해야합니까?
- 8. 파이썬 lxml에서 접두사 태그를 찾는 팁?
- 9. Python의 xml.etree.ElementTree는 C++ XML 라이브러리와 같습니다.
- 10. lxml에서 태그를 제거하지만 모든 내용을 유지하려면 어떻게해야합니까?
- 11. 런타임시 지속성 단위 기본 카탈로그를 설정할 수 있습니까?
- 12. E4X를 PHP로 사용하고 있습니까?
- 13. XML 선언은 내가 사용하고 출력
- 14. lxml에서 요소의 경로를 얻는 방법은 무엇입니까?
- 15. 디렉토리 카탈로그를 사용하는 MEF 컨테이너 자동 업데이트
- 16. Artifactory : 원형 카탈로그를 자동으로 생성 하시겠습니까?
- 17. 제안을 찾고 : 온라인 카탈로그를 만드는 도구는 무엇입니까?
- 18. Active Directory의 글로벌 카탈로그를 찾는 방법은 무엇입니까?
- 19. Python의 DTD 파일에 대해 xml 유효성을 검사하는 방법
- 20. sql : 전체 텍스트 카탈로그를 이동하는 방법
- 21. C#에서 제품 카탈로그를 만드는 방법은 무엇입니까?
- 22. Python의 setTrace()
- 23. 인트라넷에서 Python의 easy_install 사용
- 24. Python의 요청에서 IP 추출하기
- 25. Python의 데이터 구조
- 26. ThreadPool.QueueUserWorkItem을 올바르게 사용하고 있습니까?
- 27. MySql 테이블을 사용하고 있습니까?
- 28. ajax.ashx 표준을 사용하고 있습니까?
- 29. 알람을 올바르게 사용하고 있습니까?
- 30. 클래스를 잘못 사용하고 있습니까?