id대신 XPath 사용하기

템플릿의 태그와 프로세서를 연관시킬 때 key로 id를 사용하나 XPath를 사용하는 방법도 있다. m:id 대신에 m:xpath를 사용한다.

m:xpath를 사용할 수 있는 프로세서는 최상위(m:maya태그의 직하위)에서만 사용할 수 있다.

간단한 예

id를 지정하지 않은 태그의 body부를 치환하는 예. 여기서는 h1태그를 XPath로 지정한다.

xpath.html
<html> <body> <h1>Dummy</h1> <p>content</p> </body> </html>

xpath.mayaa
<?xml version="1.0" encoding="UTF-8"?> <m:mayaa xmlns:m="http://mayaa.seasar.org"> <m:write m:xpath="/html/body/h1" value="Title" replace="false" /> </m:mayaa>

실행결과
<html> <body> <h1>Title</h1> <p>content</p> </body> </html>

복수의 태그를 한번에 바꾸기

XPath를 사용한 경우 대상의 복수가 될 수 있다. 아래의 예에서는 //a를 지정해서 모든 a태그를 지정한다.

xpath_multi.html
<html> <body> <ul> <li><a href="path1.html">link1</a></li> <li><a href="path2.html">link2</a></li> <li><a href="path3.html">link3</a></li> </ul> </body> </html>

xpath_multi.mayaa
<?xml version="1.0" encoding="UTF-8"?> <m:mayaa xmlns:m="http://mayaa.seasar.org"> <m:echo m:xpath="//a"> <m:attribute name="target" value="_blank" /> </m:echo> </m:mayaa>

실행결과
<html> <body> <ul> <li><a href="path1.html" target="_blank">link1</a></li> <li><a href="path2.html" target="_blank">link2</a></li> <li><a href="path3.html" target="_blank">link3</a></li> </ul> </body> </html>

XPath에 대해서

XPath란 XML문서에서 노드를 지정하기 위한 간단한 언어로써, 로케이션 패스라는 표기로 노드를 지정한다. Java2 SDK 5.0부터 javax.xml.xpath API가 제공된다.


Comments