2010-02-01 1 views
0

일부 XML 파일이 xsi : nil = "true"속성을 갖도록 최근에 변경된 일부 XML 파일이 있습니다. 데이터를 빠르게 볼 수 있도록 XML을 HTML로 렌더링하는 XSLT 스타일 시트가 있습니다. 현재는 스타일 시트를 적용하기 전에 XML에서 네임 스페이스를 제거합니다. 그것은 우리의 마지막 업데이트까지 잘 작동했습니다. 이제는 XSL이 xsl : nil = "true"를 처리하는 방법을 모르기 때문에 오류가 발생합니다.변환에서 xsi : nil = "true"인 요소를 어떻게 제외시킬 수 있습니까?

코드를 쉽게 업데이트하여 변환하기 전에 XML에서 모든 xsl : nil = "true"일치를 바꾸거나 제거 할 수 있지만 XSLT 스타일 시트를 크롤링 할 수 있는지 궁금합니다. 그래서 xsi : nil은 무시 될 것이고 XML에 네임 스페이스가 포함되지 않아도 변환 실패를 일으키지 않을 것입니다. 지금 서버에서 변경 작업을 수행 할 수 있기 때문에 이런 방식으로 작업하는 것을 선호합니다. 새 웹 빌드를 발행해야한다면 배포를 위해 내부 고리를 뛰어 넘어야합니다.

변형 작업 전이나 도중에 xsl : nil을 제거한 후 작업을 수행 한 후에 원래 이름 공간을 제거한 이유를 알아 보았습니다.

도움을 주셔서 감사합니다.

답변

2

왜 처음부터 네임 스페이스를 제거 했습니까? XSLT를 사용하면 어떤 접두어가 출력에 포함되지 않아야하는지 제어 할 수 있으며 스타일 시트에서 해당 접두사를 건너 뛸 수 있습니다. xsi:nil

xsi 접두어에 대한 네임 스페이스 접두사 선언이 없으면 XML이 유효하지 않습니다. 따라서 잘못된 XML을 다루고 있거나 XSL 네임 스페이스 선언을 어딘가에 가지고 있으며 XSLT를 변경하여 해당 항목을 건너 뛸 수 있습니다.

XML 소스에서 찾기 쉬운 바꾸기를 수행하는 경우,이 종류의 물건이 목을 부러 뜨릴 수 있으므로 나중에 (곧!) 수정해야합니다.