2014-11-20 2 views
0

형식을 제어 할 수 있지만 기능을 수행 할 수없는 스크립트 출력이 있습니다.XSL로 잘못된 XML을 이스케이프 처리하거나 유효한 XML을 생성하십시오.

나의 최종 게임은 유효한 XML입니다. 현재 내가

<?xml version="1.0" encoding="UTF-8"?> 
<NowPlaying> 
    <ArtistName>Mickey</ArtistName> 
    <SongName>Disney Mayhem</SongName> 
    <AlbumCover>http://www.example.com/someplace/artwork name with @ character.jpg</AlbumCover> 
</NowPlaying> 

일부 데이터가 이스케이프 @ 포함 아래 xml 파일을 출력하고있다. 이것을 XSL을 사용하여 유효한 XML로 변환 할 수 있습니까? 아니면 잘못된 입력 XML이 단순히 구문 분석하지 않습니까?

내 입력 데이터가 delimited string data과 같은 간단한 형식으로 들어가는 것이 좋을까요? 각 노드는 위와 같이 3 가지 값 유형 만 가지고 있습니다.

잘못된 시도로 인해 잘못된 XML 오류가 발생했습니다.

+1

올바른 형식의 XML을 입력해야합니다. 구분 된 값을 마크 업 된 텍스트 대신 페이로드로 전달하는 XML은 처리하기가 더 어렵습니다. 그것은 여전히 ​​잘 형성되어 있어야합니다. –

+2

XSLT는 올바른 형식의 XML을 처리하는 데에만 사용할 수 있습니다. 잘못된 형식의 XML을 얻으려는 경우이를 고치려면 안됩니다. XML을 만드는 프로세스를 수정해야합니다. –

+0

좋습니다. 다른 방법이 있을까요? 어쩌면 내가 CSV로 데이터를 작성하고 xsl이 유효한 XML을 만들기 전에 php를 사용하여 인코딩합니까? 다시 말씀 드리겠습니다 ... 데이터가 그대로 (이스케이프 처리되지 않음) 있으며 함수를 수행 할 수 없으며 내보내기의 형식 만 수정하면됩니다. –

답변

0

...

<?xml version="1.0" encoding="UTF-8"?> 
<NowPlaying> 
    <ArtistName><![CDATA[Mickey]]></ArtistName> 
    <SongName><![CDATA[Disney Mayhem]]></SongName> 
    <AlbumCover><![CDATA[http://www.example.com/someplace/artwork name with @ character.jpg]]></AlbumCover> 
</NowPlaying> 

내가 기술적으로 XSL 유효 XML을 생성하고 있지 않다 동안, 내 이스케이프 데이터를 유효한 XML을 생성하는 내 목표를 달성 할 수 있었다. 불행히도 제 최종 사용 (제 3 자 파서)에서는 &을 처리 할 때만 유용했으며 @은 여전히 ​​URL 링크를 손상 시켰습니다.

Here은 CDATA에 대한 정보입니다.

0

XSLT의 일반적인 작업 흐름은 XML 구문 분석기가있는 XML 입력 문서를 XSLT가 작동하는 노드 트리로 구문 분석하고 XML 또는 HTML 또는 일반 텍스트로 직렬화 할 수있는 결과 트리를 생성합니다. 첫 번째 단계에서 HTML 구문 분석기를 플러그인하여 HTML을 노드 트리로 구문 분석 할 수있는 몇 가지 도구 체인이 있습니다. 귀하의 예는 올바른 형식의 XML도 HTML도 아닙니다. 따라서 일반적으로 XML 파서 나 XSLT를 사용하지 않는 입력을 수정하는 방법을 찾아야합니다. 일단 XML을 사용하면 XSLT를 사용할 수 있습니다.

이 내가 사용하는 결국 무엇
+0

감사합니다 ... 위의 내 의견을 참조하십시오. 서버에 PHP 파일로 해결 방법이 있습니까? –

+0

PHP를 사용하여 입력을 구성하는 경우 http://php.net/manual/en/book.dom.php 또는 http://php.net과 같이 올바른 형식의 XML을 만드는 데 도움이되는 API가 있다고 확신합니다. /manual/en/book.xmlwriter.php. –

관련 문제