" xml(으)로 태그된 글들"

XSLT로 만든 XMLViewer

2009-01-30   //   alexken작성   //   기술  //  No Comments

xml의 많은 장점에도 불구하고 떨어지는 readability엔 불만이다. 업무상 xml을 자주 만지다 보니 xml 내의 정보를 쉽게 보는 도구가 간절했고, 그래서 예전에 java로 만든 TreeView 형태의 XmlViewer도 만들었다.

이번에는 xlst로 만들었는데 생각보다 깔끔하고 맘에 든다. TreeView 형태보다 쉽게 포함관계를 표현한다.

맨 처음, element와 attribute를 일일히 지정하면서 xslt를 작성하다 보니 1000라인이 넘어 섰다. 그래서 거의 90% 완성된 시점에서 처음부터 다시 시작해 element와 attribute의 이름을 지정하지 않는 형태로 바꾸었더니 css, javascript를 포함해서 120라인 가량으로 끝낼 수 있을 뿐더러 특정 dtd/schema의 xml 뿐만 아니라 범용 XMLViewer로 사용가능해 졌다.

만들다 보니 포함관계만 표시하는 심플한 뷰, 모든정보를 빠짐없이 보여주는 뷰를 표현하기 위해 javascript를 이용했고 web에서 찾은 코드를 근간으로 했는데 원리는 숨기거나 보여질 영역을

으로 설정한뒤 해당 class를 가지는 element를 돌면서 처리하는 루틴이었다.

문제는 C 스타일의 for 루프문

for( var i=0; i<max ; i++){
   BLOCK;
}

이 내가 주로 사용하는 브라우저인 safari에서는 돌지 않았다.

그래서

for( var i in Collection){
   BLOCK;
}

형태로 바꿔서 브라우저 의존성을 제거하고,

포함관계를 색상으로 표현하기 위해서 CSS에서

*              {background: none;}
div            {background: #6666ff;}
div>div        {background: #7777ff;}
div>div>div    {background: #8888ff;}

형태로 가능했다.

내가 javascript/CSS 쪽은 거의 문외한이라 이게 최적의 코드인지는 모르지만, 내가 원래 의도했던 기능이나 목표는 다 동작해서 맘에 든다.

그리고 지금까지

< xsl:apply-templates/>

는 select로 자식 element를 지정해야지만 되는줄 알았는데, 그냥 apply-templates만 불러주니 알아서 자식 element들을 알아서 불러주네…(오늘 첨 알았음 ^^;)

Simple View

Complex View







XML Viewer


 

    function toggle(obj){
        if(obj.style.display != "block")
            obj.style.display = "block";
        else 
            obj.style.display = "none";
    }

    function toggle_all_attr(){
        var divs = document.getElementsByTagName('div');
        var tcl = " attr ";
        for( var i in divs ){
             var test = " " + divs[i].className + " ";
             if(test.indexOf(tcl) != -1){
                toggle(divs[i]);
             }
        }
    }




    

simple/complex


Mac 용 Java program 만들기??

2007-03-13   //   alexken작성   //   기술  //  1 Comment

Hello.java 가 있다고 하면

$javac Hello.java

로 컴파일 가능하다.

jar로 묶기 위해서 manifest.mf 파일을 만들고 안에 Main-Class: Hello 라고 public static void main(String[] args)을 포함한 시작 클래스를 적어둔다.

$jar cvfm hello.jar manifest.mf Hello.class

를 실행하면 여러 파일을 묶을수도 있고, 압축도 해주며 java -jar 로 실행도 가능하다. 여기까지는 일반 jar 만들기 이고…

xmlviewer.png

허접하지만 내가 만든 Xml Viewer이다. xml 파일을 끌어다 속성창에 떨어뜨리면 swing tree 보기로 보여주는데, exception 처리를 거의 하지 않아 외부 entity나, dtd를 참조하거나 하면 여지없이 exception 발생 암튼 본인 업무상 쓸일이 있어서 만들었다.

일반 macosx용 응용프로그램 처럼 보이지만 패키지 보기로 보면 jar로 묶인 자바 프로그램이란 걸 알 수 있다.

일반 macosx용 응용 프로그램 처럼 더블클릭으로 수행되며, 독에 포함 할 수도 있다.

info.png

ANT를 사용한다면 sorceforge에서 JarBundler라는 Task로 제공되어 쉽게 jar를 mac App로 만들어 주나 본데, 패키지 않에 있는 inpo.plist만 수정해주면 금망 jar로 mac App로 변신 가능 스크린 샷에서 처럼 Root-Java-

• Arguments • ClassPath • JVMVersion • MainClass

이정도 값만 세팅해주면 끝. 자세한 내용은 Apple Dev 페이지에…