템플릿의 태그와 프로세서를 연관시킬 때 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가 제공된다.
|