2011-04-27 6 views
0

나는 방금 python DOM API을 통해 스킨을 완성했으며 내가 찾고있는 것을 찾지 못했습니다.XML 태그 보존 - Python DOM 구현

기본적으로 DOM 트리를 탐색 할 때 XML 태그를 유지하려고합니다. 아이디어는 나중에 XML 파일로 변환하려는 태그 이름과 해당 속성을 인쇄하는 것입니다.

<book name="bookname" source="/home/phiri/Book/book.xml" 
     xmlns:xi="http://www.w3.org/2001/XInclude"> 
    <chapter> 
    <page>page1</page> 
    <page>page2</page> 
    </chapter> 
    <chapter> 
    <page>page1</page> 
    <page>page2</page> 
    <page>Page3</page> 
    </chapter> 
</book> 

예를 들어 위의 XML 내용을 사용하면 book.xml 파일의 결과가 필요합니다.

<book name="bookname" source="/home/phiri/Book/book.xml" 
     xmlns:xi="http://www.w3.org/2001/XInclude"> 
    <chapter></chapter> 
    <chapter></chapter> 
</book> 

파이썬을 사용하여 내용을 추출 할 때 얻을 수있는 결과를 보존하기 위해 사용할 수있는 다른 xml 패키지가 있습니까?

+0

질문이 명확하지 않습니다. XSLT (스타일 시트 변환)를 사용하려는 것처럼 들립니다. 자신이하려는 일을 명확히하면 도움을받을 가능성이 더 커집니다. – SteveMc

+0

@SteveMc : 응답 해 주셔서 감사합니다. 나는 기본적으로 XML 문서를 각각 2 단계로 작은 조각으로 나누려고합니다. 북 노드에는 북 노드와 장 노드가 있습니다. chapter.xml에는 장 노드와 페이지 노드가 있습니다. page.xml에는 페이지 번호 텍스트가 있습니다. 사물을 분명히하는 데 도움이되기를 바랍니다. – lightonphiri

+0

아이디어는 결국 XInclude를 사용하여 전체 문서를 재구성하는 것입니다. – lightonphiri

답변

0

입력에서 게시 한 출력을 가져 오는 간단한 방법은 XSLT identity transform을 무시하는 것입니다. 모든 텍스트 노드 두 개 이상의 조상이 모든 요소를 ​​제거 할 것 같습니다, 그래서 당신은 단지 사람들을 위해 빈 템플릿을 추가 것 :

일반적으로
<xsl:template match="text()"/> 

<xsl:template match="*[count(ancestor::*) &gt; 2]"/> 

파이썬에서 XSLT를 사용하는 가장 좋은 방법은 함께 libxml2 모듈. 아무도 pure Python XSLT 프로세서를 아직 만들지 않았기 때문에 순수한 Python 솔루션이 필요한 경우가 아니라면 XSLT를 사용하지 않아도됩니다.

+0

감사합니다. 나는 XSLT에 충실해야한다고 생각한다. – lightonphiri