📄 xtp-intro.xtp
字号:
<title keywords="xsl,xslt,xml,jsp,resin,caucho,template">XML Template Pages Introduction</title><summarylist/><p>XTP (XML Template Pages) creates web pages from XML using XSLstylesheets.<p>The documentation for the specific tags is in the <a href='xsl.xtp'>XSLstylesheet</a> section. This section describes how XTP works.<p>XTP lets web designers create active pageswithout changing the original text. It uses a separate <ahref='xsl.xtp'>XSL</a> stylesheet to transform the original documentinto a fancy formatted document. Because the active stylesheet isseparate from the passive content, XTP gives designers a tighterfocus. When worrying about style, designers can concentrate on thestylesheet. When concentrating on content, designers can focus on thetext.<p>XTP makes the input file simpler: it can be plain old HTML. Itseparates the content (*.xtp) from the style (*.xsl). The tradeoffis that XSL stylesheets are slightly more complicated than JSP activepages. For JSP, scripts execute exactly where they're placed.XTP has to match HTML to script fragments using patterns.<p>XTP works by matching stylesheet patterns to the input HTML,creating the result HTML following the pattern actions.XTP analyzing the input HTML into a structured HTML treeusing the XML document object model. Foreach node, it finds the best pattern in the XSL and applies theaction. The action prints to the output HTML.<section name=blank title='Blank Stylesheet Example'>In this example, we're using a blank stylesheet. Even with a blankstylesheet, <resin/> does something useful: it prints out all text,removing the tags.<example title='hello.xtp'><TITLE>Hello, world</TITLE><H1>Hi, World!</H1><P>The hello, world example is simple.</example><p><resin/> first reads in the XTP file, parsing it like an HTMLfile. It adds optional tags, like <html> and </p> andforces all HTML tags to be lower case.<example title='hello$9342.dom'><html> <head> <title>Hello, world</title> </head> <body> <h1>Hi, World!</h1> <p>The hello, world example is simple.</p> </body></html></example><p>Next, <resin/> starts its matching process at the top. Since the stylesheetis empty, it uses the default rules. The default rules say: processan element's children and print a text node's data.<box class='green'><ol><li>#document, process children <ol> <li><html>, process children <ol> <li><head>, process children <ol> <li><title>, process children <ol> <li>"Hello, world", print to output </ol> </ol> <li><body>, process children <ol> <li><h1>, process children <ol> <li>"Hi, World!", print to output </ol> <li><p>, process children <ol> <li>"The hello, ...", print to output </ol> </ol> </ol> </ol></ol></box><example title='hello$9342.html'>Hello, worldHi, World!The hello, world example is simple.</example></section><section name=page title='Simple Page Template'><resin/>'s XTP can create standard page layout: common backgrounds,navigation, headers and footers. This is a common use for any of theactive content creation tools.<p>This example adds two things to the default stylesheet. Allelements are copied instead of ignored, and the body of the HTML getsa background and a margin.<p>Copying elements is easy. The copy template matches all elements<code/match='*'/>. When <resin/> processes a node whose patternmatches nothing else, it will execute the copy action. The actioncopies the element (<code/xsl:copy/>) and processes thechildren (<code/xsl:apply-templates/>).<example><xsl:template match='*|@*'> <xsl:copy> <xsl:apply-templates select='@*|*'/> </xsl:copy></xsl:template></example><p>For the page template pattern, we use <code/match='/html/body'/>.<resin/> will execute the template in place of the body.<example><xsl:template match='/html/body'><eg-em> <!-- cyan background --> <body bgcolor='cyan'> <table width='100%'> <!-- left margin --> <tr><td width='240'></td> <!-- center column --> <td width='80%'> <!-- insert body contents --></eg-em> <xsl:apply-templates/><eg-em> <!-- copyright footer --> <hr> Copyright &copy; 1999 Caucho Technology </td></tr> </table> </body></eg-em></xsl:template></example><p>The translation follows the same order as in the blank stylesheetexample. The body rule is used for the body and the copy ruleis used for every other tag.<example><example><TITLE>Hello, world</TITLE><H1>Hi, World!</H1><P>The hello, world example is simple.</example><results><html> <head> <title>Hello, world</title> </head> <body bgcolor='cyan'> <table width='100%'> <tr><td width='240'></td> <td width='80%'> <h1>Hi, World!</h1> <p>The hello, world example is simple. </p> <hr> Copyright &copy; 1999 Caucho Technology </td></tr> </table> </body></html></results></example></section>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -