2011-02-14 5 views
1

우리는 특정 XHTML 파일을 Word 파일로 변환하는 스크립트를 만들지 만 Word 파일과 HTML 파일이 서식 변경을 처리하는 방식과 완전히 다릅니다. 다음과 같이un-nest HTML 태그

는 예를 들어, 우리는 부분이있을 수 있습니다 :

<p>Title 

    <ol> 
     <li><p>List 1</p></li> 
     <li><p>List 2</p></li> 
    </ol> 

Additional Information</p> 

이 어떤 특정 표준 이전에 작성된 기존 파일과 마찬가지로, 파일 사이를 변경하고, 각 파일 불일치를 만들어, 다른 사람에 의해 작성되었습니다. 많은 파일이 많이 중첩되어 있으며 많은 파일이 중첩되어 있지 않습니다. 웹 브라우저에서 완벽하게 렌더링 될 수 있지만 Word에서 사용되는 XML 서식으로 쉽게 변환하려면 다음과 비슷한 Word 문서 형식의 HTML을 웹 브라우저에서 완벽하게 렌더링 할 수 있지만 파일이 중첩 된 경우를 감지 할 때 문제가 발생합니다. 예) : Word 문서로

<p>Title</p> 

<li>List 1</li> 
<li>List 2</li> 

<p>Addition Information</p> 

, OpenXML과 표준을 사용하여이 명시 적으로 시작하여 새로운 섹션이 생성되기 전에 끝나는 형식 섹션에 크게 의존하고있다. 유감스럽게도, 이것은 굵은 체 또는 기울임 체로 된 모든 부분에 적용됩니다.

목록 형식을 찾은 다음 p 태그를 제거하고 li 태그를 정렬 된 목록의 oli 태그 또는 uli로 변환하여 적절한 형식으로 변환하는 작은 정규식을 이미 만들었습니다. 포맷되지 않은 목록. 그런 다음 Word 문서에 적합한 XML 서식으로 변환됩니다.

내가 겪고있는 문제는 위의 예와 같이 ap 태그가 중첩되어 있고 li 태그 앞에 새로운 닫기 p 태그를 삽입하는 것이 감지하는 것이 훨씬 어렵다는 것입니다. 새로운 오프닝 p 태그를 사용하여 찾고자하는 선형 태그없는 중첩 태그를 만듭니다.

제 질문은 정규 표현식이나 이와 비슷한 방법으로이 작업을 비교적 간단하게 수행 할 수 있는지 또는 모든 레거시 파일로 돌아가서 정리하는 것이 일반적으로 쉬운 지 알고 있다면 현재의 표준에 맞추어 호환성을 확보하십시오. (이러한 파일을 많이 가지고 있으므로 부적절한 형식의 Word 문서를 만들기 전에이를 잘못 작성하는 것을 원치 않으므로 바람직하지 않습니다.

일반적으로 p, ol/ul/li, em, strong, table/th/tr/td 및 a 태그를 더 이상 사용하지 않습니다. 나는 또한 어떤 HTML 태그 안에 있지 않은 텍스트를 발견했다. 이것은 p 태그를 감싸는 것이 더 좋을 것이다.

참고 : 우리는 사용의 용이성을 고려하여 PDF를 사용할 수 없으며 일반적으로 스크립트 크기 제한으로 인해이 제한이 적용되지 않습니다.

+3

당신이 발견 한 것은 HTML을 정규식으로 구문 분석 할 수 없다는 것입니다. 본격적인 HTML 파서가 필요합니다. – Pointy

+0

@Pointy하지 마십시오. 조차. 가기. 그곳에.:) –

+0

@Pointy 불행히도 그렇습니다. 그러나 나는 이들 중 대부분이 상대적으로 균일하기 때문에, 그렇게하지 않고도 프로세스를 진행할 수 있기를 희망합니다. :) – shmeeps

답변

1

후뿐만 아니라 첫 번째 태그를 제거 . 각 시작 태그를 일반 섹션 종료 태그로 대체 한 다음 해당 섹션 태그를 시작으로 대체합니다. 마지막으로 첫 번째 시작 태그와 마지막 닫는 태그를 각각 콘텐츠의 시작과 끝 부분에 추가하면 이제는 제대로 작동합니다. 도와 주셔서 감사합니다.

2

htmLawed와 같은 HTML 라이브러리를 사용하여 다루지 않으려는 태그를 삭제하는 것이 좋습니다.

http://www.bioinformatics.org/phplabware/internal_utilities/htmLawed/

자신의 기능 목록에서 미리보기 :이 작업을 수행하는 가장 쉬운 방법은 내용에 종료 태그를 제거하는 것입니다 발견했습니다

* understands improperly spaced tag content (like, spread over more than a line) and properly spaces them ` 
    * attempts to balance tags for well-formedness ^~` 
    * understands when omitable closing tags like </p> (allowed in HTML 4, transitional, e.g.) are missing ^~` 
    * attempts to permit only validly nested tags ^~` 
    * option to remove or neutralize bad content ^~` 
    * attempts to rectify common errors of plain-text misplacement (e.g., directly inside blockquote) ^~` 
+0

정확히 내가 찾던 것은 아니지만, 우리가 가지고있는 몇 가지 다른 문제에 대해 유망 해 보입니다. 고맙습니다. – shmeeps