Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

xsl 에서 첨부파일 이미지를 보여주고 싶은데요...

0 views
Skip to first unread message

mongmong

unread,
Jul 6, 2003, 9:43:48 PM7/6/03
to
안녕하세요... 새로운 한주가 시작되었네요...

XSL로 자료실 처럼 첨부파일을 아이콘으로 보여주여 주고 싶은데요... 아래와
같이 무식한(?) 방법 말고 멋있는 방법이 없을까 해서 질문 올립니다...

xml은 역시 어렵네요... ^^;;


<xsl:choose>
<xsl:when test="@EXT='asa' or @EXT='asf' or @EXT='asp' or @EXT='au' or
@EXT='bat' or @EXT='bmp' or @EXT='c' or @EXT='chm' or @EXT='com' or
@EXT='dll' or @EXT='doc' or @EXT='eml' or @EXT='exe' or @EXT='gif' or
@EXT='h' or @EXT='hlp' or @EXT='htm' or @EXT='html' or @EXT='hwp' or
@EXT='inf' or @EXT='jpeg' or @EXT='jpg' or @EXT='js' or @EXT='log' or
@EXT='mdb' or @EXT='mp3' or @EXT='mpeg' or @EXT='mpg' or @EXT='msg' or
@EXT='pcx' or @EXT='pdf' or @EXT='pot' or @EXT='ppt' or @EXT='psd' or
@EXT='ra' or @EXT='reg' or @EXT='rfc' or @EXT='rm' or @EXT='tif' or
@EXT='ttf' or @EXT='txt' or @EXT='wav' or @EXT='xls' or @EXT='zip' ">
<img src='images/attach/i_{@EXT}.gif' width="16" height="16"/></xsl:when>
<xsl:otherwise>
<img src="./images/attach/i_.gif" width="16" height="16" />
</xsl:otherwise>
</xsl:choose>

whohwa

unread,
Jul 7, 2003, 12:29:20 AM7/7/03
to
그냥 여러가지 방법중에 하나라고 생각하시고 보시기 바랍니다.
XSL 에서 자바 스크립 이용하실 수 있습니다.
이미 확장자는 얻으신 것 같고, 그 확장자를 javascript 에 넣어 표시하는 것이
더 간단해 보입니다.

자바 스크립 만드시는 것은 멍멍이님이 훨씬 잘하시리라 생각하여...xsl 에서
자바 스크립을 사용한 예만 올리도록 하겠습니다. (부등호 표시나 부분에서 &lt;
를 이용한다는 점만 기억하시면 됩니다.)


record.xsl
------------------------------
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt"
xmlns:ow="http://openwiki.com/2001/OW/Wiki"
extension-element-prefixes="msxsl ow">
<xsl:output indent="yes" method="xml" omit-xml-declaration="yes"/>

<xsl:template match='/'>
<table border="1">
<xsl:apply-templates select='*/*[2]/*'>
<xsl:sort select="@*[1]"/>
</xsl:apply-templates>
</table>
</xsl:template>

<xsl:template match='*'>
<tr>
<xsl:apply-templates select="@*"/>
</tr>
</xsl:template>

<xsl:template match='@*'>
<td>
<xsl:apply-templates select="@ord_num"/>
<xsl:value-of select="."/>
</td>
</xsl:template>

<xsl:template match='@ord_num'>
<td>
<xsl:value-of select="ow:jshindexkey(.)"/>
</td>
</xsl:template>


<msxsl:script language="JScript" implements-prefix="ow">

function jshindexkey(seedWord) {
var arCaseKey = new Array("html", "gif", "abc");
var i;
var pword;
var indexWord = "0";
for(i = 0; i &lt; arCaseKey.length; i++){
if(pword &lt; arCaseKey[i]){
return(indexWord);
}
indexWord = arCaseKey[i];
}
return(indexWord);
}

</msxsl:script>

</xsl:stylesheet>


***************************************
정은이 아빠(http://aspqna.whohwa.pe.kr)

"mongmong" <ins...@yahoo.co.kr> wrote in message
news:edD0XlCR...@tk2msftngp13.phx.gbl...

Han

unread,
Jul 7, 2003, 2:45:49 AM7/7/03
to
멍멍이님

성능은 지금 멍멍이님의 방법이 가장 뛰어날겁니다. 후화님처럼 자스도 가능하고,
또는 제경우 그런 목록이 있을때는 별도 xml파일로 저장합니다. 예를 들어,

(xml 1)
<a>
<b EXT='.asa'/>
</a>

(xml 2)
<a2>
<b2 EXT2='ext1.gif'>
.asa, .asf, ...
</b2>
</a2>

xml2 파일에 확장자목록, 사용할 그림이름같은걸 저장합니다. 노드갯수 또는
확장자 유형은 계속 늘어날수도 있겠죠. 그러면 xslt는 document함수를 써서
외부파일을 참조하는 형태로...

<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:output method='xml' indent='yes' omit-xml-declaration='yes'/>

<xsl:template match="/">
<root>
<xsl:apply-templates select='a/b'/>
</root>
</xsl:template>

<xsl:template match='b'>
<xsl:choose>
<xsl:when test="contains(document('x2.xml')//b2, @EXT)">
<xsl:value-of select="document('x2.xml')//b2/@EXT2"/>
</xsl:when>
<xsl:otherwise>NONE</xsl:otherwise>
</xsl:choose>
</xsl:template>

</xsl:stylesheet>

"mongmong" <ins...@yahoo.co.kr> wrote in message
news:edD0XlCR...@tk2msftngp13.phx.gbl...

mongmong

unread,
Jul 7, 2003, 2:43:22 AM7/7/03
to
whohwa님 감사합니다...

그런데요....

이상하게도 문자열 비교에서 계속 에러가 나는군요... (숫자 비교시에는 에러가
나지 않습니다...) equals 메소드를 사용해도 에러나고요..

에러메세지 ------------------------
Microsoft JScript 런타임오류
인수의 개수나 속성 할당이 잘못되었습니다.
줄 = 10, 열=2(줄은 스크립트 블럭 시작으로부터 오프셋).
속성또는 메서드 호출어세 오류가 반환되었습니다.
----------------------------------

두시간 가까이 삽질하다가... 마음을 비우고 아래와 같은 함수를 만들어서 테스트
해보니... 역시 에러가 나는군요... if 블럭을 주석처리하면 에러가 나지
않습니다....


도데체 문자열 비교를 어떻게 해야 하나요?....


<xsl:template match="file">
<xsl:value-of select="ow:jshindexkey('abc')"/>
</xsl:template>

<msxsl:script language="JScript" implements-prefix="ow">

function jshindexkey(strExt) {
var strx = "abc"
var strv = "false"
if (strExt == strx){
strv = "true"
}
return(strv);
}
</msxsl:script>

"whohwa" <who...@dreamwiz.com> wrote in message
news:ezDxYBER...@TK2MSFTNGP12.phx.gbl...

whohwa

unread,
Jul 7, 2003, 4:19:09 AM7/7/03
to
아래 Han 님의 훨씬 설득력 있는 방법이 제시 되긴 했지만...^^
혹시 나중에라도 필요할까 싶어서....
일단 정답은 string() 입니다.

문자열로 취급 하는것이 xml 에선 약간 틀린것 같습니다.
string('abc') 으로 처리 해서 해보시면 이상없이 나오실 껍니다.


<xsl:template match="file">
<xsl:value-of select="ow:jshindexkey(string('abc'))"/>
</xsl:template>

<msxsl:script language="JScript" implements-prefix="ow">
function jshindexkey(strExt) {
var strx = "abc"
var strv = "false"
if (strExt == strx){
strv = "true"
}
return(strv);
}
</msxsl:script>

--

***************************************
정은이 아빠(http://aspqna.whohwa.pe.kr)

"mongmong" <ins...@yahoo.co.kr> wrote in message

news:%23zanxMF...@tk2msftngp13.phx.gbl...

0 new messages