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>
자바 스크립 만드시는 것은 멍멍이님이 훨씬 잘하시리라 생각하여...xsl 에서
자바 스크립을 사용한 예만 올리도록 하겠습니다. (부등호 표시나 부분에서 <
를 이용한다는 점만 기억하시면 됩니다.)
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 < arCaseKey.length; i++){
if(pword < 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...
성능은 지금 멍멍이님의 방법이 가장 뛰어날겁니다. 후화님처럼 자스도 가능하고,
또는 제경우 그런 목록이 있을때는 별도 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...
그런데요....
이상하게도 문자열 비교에서 계속 에러가 나는군요... (숫자 비교시에는 에러가
나지 않습니다...) 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...
문자열로 취급 하는것이 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...