public class MediaParser implements ErrorHandler {
private DOMParser parser = new DOMParser();
public Document parse(String url) throws SAXException, IOException {
parser.parse(url); return parser.getDocument();
}
public Collection loadAssets(String url) throws ... {
Document doc = parse(url);
NodeList nodes = doc.getElementsByTagName("media-asset");
List list = new ArrayList<>();
for (int i=0; i
<%@ taglib uri="https://example.com/taglib" prefix="media" %>
<media:load url="/assets.xml" collectionName="assets" cursorName="asset" />
<c:forEach items="${assets}" var="asset">
${asset.name} ${asset.type} ${asset.urn}
</c:forEach>
邏輯寫在 .xsl,JSP 僅引用 Tag 執行轉換,修改 UI 僅改 XSL/HTML,Java 代碼不動。
public class XsltFilter implements Filter {
public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) {
HttpServletRequest httpReq = (HttpServletRequest) req;
String ua = httpReq.getHeader("User-Agent");
// 依 UA 選擇 XSLT 樣式表轉換輸出 HTML / WML / cHTML
chain.doFilter(new XsltRequestWrapper(httpReq, xslt), resp);
}
}