xsl 불여우가 인식을 못합니다.

국내에 웹 사이트들이 웹 표준을 지키고 OS나 브라우저와 관계 없이 접근성을 향상 시키기 위한 사이트 버그 신고 및 문제 해결을 위한 게시판입니다.
Post Reply
안데르센

xsl 불여우가 인식을 못합니다.

Post by 안데르센 »

xml 코드는 아래와 같고,

Code: Select all

<?xml version="1.0" encoding="euc-kr"?>
<?xml-stylesheet type="text/xsl" href="test1.xsl"?>
<member>
<![CDATA[
 <a href="http://ssen.name">홍반장</a>
 <div style="border:1px solid black">
 가나다라마바사
 <img src="http://sstatic.naver.com/search/images8/menu01_on.gif" />
 </div>
 <phone>123-4568</phone>
]]>

</member>
xsl 코드는 아래와 같습니다.

Code: Select all

<?xml version="1.0" encoding="euc-kr"?><!-- DWXMLSource="test1.xml" -->
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output encoding="euc-kr" method="html" indent="yes" />
<xsl:template match="/">

<html>
<head>
<title>테스트</title>
</head>
<body>
	<xsl:value-of select="member" disable-output-escaping="yes" />
</body>
</html>
</xsl:template>
</xsl:stylesheet>


disable-output-escaping="yes" 을 넣어줘서
xml 코드안의

Code: Select all

 <div style="border:1px solid black">
 가나다라마바사
 <img src="http://sstatic.naver.com/search/images8/menu01_on.gif" />
 </div>
 
을 html로 표현할 수 있어야 합니다.

익스에서나 드림위버의 xsl 파서 (xsl f12 미리보기) 에서는
자연스럽게 html 로 출력이 되어서 이미지랑 div 가 표현되는데
불여우에서만 < 가 < 같은 식으로 바뀌어버려서
텍스트로만 출력이 되어버립니다. (코드만 출력된다는 소리죠.)

disable-output-escaping="yes" 속성이
< 를 < 로 파싱하지 말라는 뜻인데, 이게 안되니 많이 곤란한 상황입니다.
불여우의 버그라서 그런건지, 아니면, 제가 표준적인 코드에서 뭔가
실수를 해서 안되는건지 알수조차 없어서 문제네요.
빛알갱이
해커
해커
Posts: 1146
Joined: 2004 01 15 20:06 36

Post by 빛알갱이 »

http://www.semiologic.com/2005/05/15/firefox-xslt-bug/
https://bugzilla.mozilla.org/show_bug.cgi?id=98168#c11




모질라는 IE와 달리 XML을 serialize하지 않으므로, disable-output-escape...를 지원할 의무가 없답니다. 그러니까, 그것을 쓰지 않을 방법을 찾아 보세요. 예를 들어,

http://xml.silmaril.ie/authors/html/
혹은
http://benincampus.blogspot.com/2005/07 ... utput.html

를 보세요.
초희

음..

Post by 초희 »

위와 같은 상황이라면
XML에서 굳이
<![CDATA[섹션을 사용하실 필요는 없다 라고 봅니다.
같은 맥락으로 xml파일에 div 스타일을 지정할 필요가 있는지 ..
test1.xsl .. 스타일 파일이 지정되어 있는데...

걍 .. 저 같으면 아래와 같이 작성하겠습니다.

<?xml version="1.0" encoding="euc-kr"?>
<?xml-stylesheet type="text/xsl" href="test1.xsl"?>
<list>
<member>
<link href=""http://ssen.name">홍반장1</link>
<data>
가나다라마바사
</data>
<pic><img src="http://sstatic.naver.com/search/images8/menu01_on.gif" /></pic>
<phone>123-4568</phone>
</member>

<member>
<link href=""http://ssen.name">홍반장2</link>
<data>
가나다라마바사
</data>
<pic><img src="http://sstatic.naver.com/search/images8/menu01_on.gif" /></pic>
<phone>123-4568</phone>
</member>
</list>


그리고 xsl 파일은 xhtml1.1을 기준으로 작성하셨다면
<?xml version="1.0" encoding="euc-kr" ?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html"
doctype-public="-//W3C//DTD XHTML 1.1//EN"
doctype-system="http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"
indent="yes" encoding="euc-kr"/>


<xsl:template match="/">
<html>
<head>
<title>테스트</title>
</head>
<body>
<xsl:for-each select="//member[position()<=5]">
<xsl:attribute name="href">
<xsl:value-of select="link/@href" />
</xsl:attribute>
<xsl:value-of select="data" />
<img><xsl:attribute name="src"><xsl:value-of select="pic" /></xsl:attribute></img>
</xsl:for-each>
</body>
</html>
</xsl:template>
</xsl:stylesheet>

//member[position()<=5 는 맴버를 5명만 뽑습니다.
그리고 xml파일에 DIV 스타일을 지정하지 마시고
XSL에서 지정하심이 좋을듯 합니다,.
<DIV ID="style"><xsl:value-of select="data" /></div>

xsl 전체 가공까지는 신경을 쓰질 못 하겠습니다 . 어떠한 데이터를 뽑아 내시려는지 ...

여튼 위와 같은 식이면 불여우에서 잘 돌아갈겁니다.


.....그리고 참고로 말씀을 드릴것 같으면
요즈음 오페라 브라우저 사용도 불여우 못지 않게 많이들 하시더군요.
오페라에서는 XSL을 지원하지 않는다 점..참고하십시요
안데르센

.

Post by 안데르센 »

우선 답변 감사드립니다.

ㅡ ㅡ;;; 모질라에서 원래 지원을 안하는거였군요.
언젠간 지원이 되었으면 좋겠네요.

알려주신 사이트들 중에서 javascript 를 통해 &lt 같은 문자를
< 로 바꾸는 것이 있어서 파일을 분석해보고 있는중입니다.

위지윅 에디터를 사용해서 만들어낸 문서를 xml 로 보여줄 생각이었기에
xml 의 정해진 틀을 약간 깰수 있는 방법이 필요했습니다.

html 문서상에서 <내부링크 title="xxx">제목</내부링크> 라고
적으면 php 를 통해서 html 부분들을 <![CDATA[ 로 감싸서 자연스레 출력시키고,
그 사이, 사이에 존재하는 일종의 단축코드가 되는 저 xml 태그는
xml 템플릿 기능을 사용해서 구현해보려고 했거든요.

저런 형식으로 구현해보면 위지윅 에디터의 자유로운 문서표현도 가능 하면서
동시에 BBcode 같은것들 보다 더 강력하고, 코드추가도 정규식이 아닌 방식으로 해서
편하고, 뭐 하여튼 여러모로 장점이 있을것 같아서요.

js 로 일단 해보고 영 안정적인 상태로 돌리기 힘들다 싶으면
그냥 BBcode 방식으로 가야겠죠.
빛알갱이
해커
해커
Posts: 1146
Joined: 2004 01 15 20:06 36

Re: .

Post by 빛알갱이 »

안데르센 wrote:우선 답변 감사드립니다.

ㅡ ㅡ;;; 모질라에서 원래 지원을 안하는거였군요.
언젠간 지원이 되었으면 좋겠네요.
버그질라에서 개발자가 적은 바와 같이 앞으로도 지원할 가능성은 없다고 보셔야 할 것 같습니다.
html 문서상에서 <내부링크 title="xxx">제목</내부링크> 라고
적으면 php 를 통해서 html 부분들을 <![CDATA[ 로 감싸서 자연스레 출력시키고,
.....
js 로 일단 해보고 영 안정적인 상태로 돌리기 힘들다 싶으면
그냥 BBcode 방식으로 가야겠죠.
왜 꼭 클라이언트쪽에서 처리하시려는지요? 어차피 php를 통해 처리를 하신다면 써버쪽에서 미리 처리하시면 더 나을 것 같은데요.
Post Reply

Who is online

Users browsing this forum: No registered users and 4 guests