📄 doc_header.xsl~
字号:
<!-- - Formats the top level of the template. header.xsl assumes the XTP - has been read in as HTML. So it can assume the existence of the - html and body tags. --><xsl:stylesheet><xsl:output disable-output-escaping=yes/><#@ page import='com.caucho.web.* com.caucho.vfs.* com.caucho.server.http.*' #><#@ page import='javax.servlet.jsp.*' #><#@ page import='javax.servlet.*' #><#@ page import='javax.servlet.http.*' #><#@ cache #><#! String top = "/"; String title = null; Navigation nav = null; String topnav(Object a, Object b, Object c) { return ""; } void initNavigation(XslWriter out) throws IOException { PageContext page = (PageContext) out.getProperty("caucho.page.context"); ServletContext app = page.getServletContext(); HttpServletRequest req = (HttpServletRequest) page.getRequest(); String url = ((CauchoRequest) req).getPageServletPath(); int p = url.lastIndexOf('/'); String base = url.substring(0, p); ArrayList paths = new ArrayList(); while (p >= 0) { String realPath = req.getRealPath(url.substring(0, p + 1)); Path path = ((Path) out.getProperty("caucho.pwd")).lookupNative(realPath); paths.add(path); if (path.lookup("toc.xml").exists()) out.addCacheDepend(path.lookup("toc.xml")); p = url.lastIndexOf('/', p - 1); } nav = Navigation.createNested(paths, base); if (nav == null) nav = new Navigation(); top = nav.getAttribute("top"); if (top == null || top == "") top = "/"; top = req.getContextPath() + top; } void writeThreaded(XslWriter out, boolean allowComments) throws IOException, SAXException { PageContext page = out.getPage(); HttpServletRequest req = (HttpServletRequest) page.getRequest(); NavItem item = nav.findURL(req.getRequestURI()); if (item == null) return; out.pushElement("table"); out.setAttribute("border", "0"); out.setAttribute("cellspacing", "0"); out.setAttribute("width", "100%"); out.pushElement("tr"); out.pushElement("td"); NavItem prev = item.getPrevious(); if (prev == null) out.print(" "); else { out.pushElement("a"); out.setAttribute("href", prev.getLink()); out.print(prev.getTitle()); out.popElement(); } out.popElement(); if (item.getParent() != null) { NavItem parent = item.getParent(); out.pushElement("td"); out.setAttribute("width", "100%"); out.pushElement("center"); out.pushElement("a"); out.setAttribute("href", parent.getLink()); out.print(parent.getTitle()); out.popElement(); out.popElement(); out.popElement(); } else { out.pushElement("td"); out.setAttribute("width", "100%"); out.print(" "); out.popElement(); } out.pushElement("td"); out.setAttribute("align", "right"); NavItem next = item.getNext(); if (next == null) out.print(" "); else { out.pushElement("a"); out.setAttribute("href", next.getLink()); out.print(next.getTitle()); out.popElement(); } out.popElement(); out.popElement(); out.popElement(); } void writeFamilyNavigation(XslWriter out) throws IOException, SAXException { PageContext page = (PageContext) out.getProperty("caucho.page.context"); HttpServletRequest req = (HttpServletRequest) page.getRequest(); NavItem item = nav.findURL(req.getRequestURI()); ArrayList list = null; if (item != null) list = item.familyNavigation(); if (list == null || list.size() == 0) return; for (int i = 0; i < list.size(); i++) { NavItem child = (NavItem) list.get(i); if (child == null) { out.pushElement("tr"); out.pushElement("td"); out.pushElement("hr"); out.popElement(); out.popElement(); out.popElement(); } else { out.pushElement("tr"); out.pushElement("td"); String link = child.getLink(); if (link.startsWith("/")); link = link.substring(1); out.pushElement("a"); out.setAttribute("class", "leftnav"); out.setAttribute("href", top + link); out.println(child.getTitle()); out.popElement(); out.popElement(); out.popElement(); } } } void topnav(XslWriter out, String name, String href) throws IOException, SAXException { out.pushElement("img"); out.setAttribute("name", name); out.setAttribute("src", top + "images/pixel.gif"); out.setAttribute("alt", ""); out.setAttribute("width", "8"); out.setAttribute("height", "8"); out.popElement(); out.println(" "); out.pushElement("a"); out.setAttribute("class", "topnav"); out.setAttribute("href", top + href); out.println(name); out.popElement(); } void printDescription(XslWriter out, Node node, int count) throws IOException, SAXException { CharBuffer cb = CharBuffer.allocate(); Iterator iter = XPath.select(".//text()|.//resin|.//resintm", node); while (iter.hasNext()) { Node subnode = (Node) iter.next(); if (subnode.getNodeName().equals("#text")) { String str = subnode.getNodeValue(); for (int i = 0; i < str.length(); i++) { char ch = str.charAt(i); if (ch == '<') cb.append("&"); else if (ch != '"' && ch != '\'') cb.append(ch); } } else if (subnode.getNodeName().equals("resin")) cb.append("Resin"); else if (subnode.getNodeName().equals("resintm")) cb.append("Resin(tm)"); if (cb.length() >= count) break; } if (cb.length() > count) cb.setLength(count); if (cb.length() > 0) { out.pushElement("meta"); out.setAttribute("name", "description"); out.setAttribute("content", cb.close()); out.popElement(); } }#>html<<<# initNavigation(out); title = XPath.evalString("head/title", node); if (title == null) title = "";#><html><head><title>$(head/title/@section)<#= title #></title><link rel="STYLESHEET" type="text/css"> <xsl:attribute name='href'><#= top #>css/default.css</xsl:attribute></link><xsl:if test='head/title/@description'> <meta name="description" content="{head/title/@description}"/></xsl:if><xsl:if test='not(head/title/@description)'> <# printDescription(out, XPath.find("/html/body", node), 256); #></xsl:if><xsl:if test='head/title/@keywords'> <meta name="keywords" content="{head/title/@keywords}"/></xsl:if></head><xsl:apply-templates select='body'/></html>>>html/body<< <body bgcolor=white> <xsl:attribute name='background'><#= top #>images/background.gif</xsl:attribute> <table cellpadding="1" cellspacing="0" border="0" width="100%" summary=""> <tr valign="top"><td width="120"> <table cellspacing="0" cellpadding="2" border="0" width="120"> <tr><td colspan="2"> <img width="120" height="40" alt="caucho"> <xsl:attribute name='src'><#= top #>images/caucho.gif</xsl:attribute> </img><br/> </td></tr> <!-- Left Navigation --> <# writeFamilyNavigation(out); #> </table> </td> <td width="20"> <img alt="" width="20" height="1"> <xsl:attribute name='src'><#= top #>images/pixel.gif</xsl:attribute> </img> </td> <td width="100%"> <xsl:comment> top navigation </xsl:comment> <table width="100%" cellspacing="0" cellpadding="0" border="0" summary=""> <tr class="toptitle"> <td rowspan=2 width="90%"> <xsl:attribute name='background'><#= top #>images/hbleed.gif</xsl:attribute> <font class=toptitle size="+3"> <xsl:apply-templates select='/html/head/title/node()'/> </font> <xsl:for-each select='/html/head/title/@subtitle'> <br/> <{.}> </xsl:for-each> <xsl:for-each select='/html/head/title/@author'> <br/> <em>By <{.}></em> </xsl:for-each> </td> </tr> </table> <!-- vspace --> <img alt="" width="1" height="20"> <xsl:attribute name='src'><#= top #>images/pixel.gif</xsl:attribute> </img> <br/> <# if (nav != null && nav.getAttribute("threaded").equals("true")) { writeThreaded(out, false); out.pushElement("hr"); out.popElement(); } #> <!-- Actual Contents --> <xsl:apply-templates/> <!-- footer --> <hr/> <# if (nav != null && nav.getAttribute("threaded").equals("true")) writeThreaded(out, true); #> <center> <em>Copyright © 1998-2000 Caucho Technology. All rights reserved.</em> </center> <!-- <# if (nav.isThreaded()) nav.writePrevNext(out, filename); #> --> <table border=0 cellspacing=0 width='100%'> <tr><td><em>Copyright © 1998-2000 Caucho Technology. All rights reserved.</em> </td> <td align=right><img width=96 height=32> <xsl:attribute name='src'><#= top #>images/logo.gif</xsl:attribute> </img></td> </tr> </table> </td> </tr> </table> </body>>></xsl:stylesheet>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -