关于的问题?

Jeelen 2002-03-19 09:37:41
test1.xsl

<?xml version="1.0" encoding="gb2312"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<xsl:template match="/">
<html>
<head>
</head>
<body>
<xsl:apply-templates/>
</body>
</html>
</xsl:template>
<xsl:template match="input">
<xsl:value-of select="."/>
<input>
<xsl:attribute name="name"><xsl:value-of select=".[@name]"/></xsl:attribute>
<xsl:attribute name="type"><xsl:value-of select=".[@type]"/></xsl:attribute>
<xsl:attribute name="size"><xsl:value-of select=".[@size]"/></xsl:attribute>
<xsl:attribute name="value"><xsl:value-of select=".[@value]"/></xsl:attribute>
</input>
</xsl:template>
</xsl:stylesheet>

test1.xml

<?xml version="1.0"?>
<?xml-stylesheet href="test1.xsl" type="text/xsl"?>
<input name="testinput" type="text" size="50" value="abcdef">Test:
</input>

解析出来的结果不对呀!!为什么?
大家可以Copy过去帮我测测看,为什么会这样呢,给我出出主意吧


...全文
51 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
chechy 2002-03-19
  • 打赏
  • 举报
回复
IE5.X也可以用http://www.w3.org/1999/XSL/Transform,有两种方式:
1、用JavaScript
2、去微软网站下载一个程序xmlinst,来替换IE地注册表,这样IE就可以用
http://www.w3.org/1999/XSL/Transform的XSLT了。
Jeelen 2002-03-19
  • 打赏
  • 举报
回复
“自己写Code来Transform”,这是什么意思,IE5.0下面好像是只能用http://www.w3.org/TR/WD-xsl这个版本的解析器,其它版本的解析不出来
chechy 2002-03-19
  • 打赏
  • 举报
回复
没有,也不能用。建议你不要使用这个陈旧的已经被淘汰的XSLT,而用最新的。IE5.X没有过错,过错的是不该用IE去做,而应该自己写Code来Transform。
Jeelen 2002-03-19
  • 打赏
  • 举报
回复
我的方法错了,现在可以了,给个QQ可以吗,我想碰到问题可以再问问你:)
谢谢
Jeelen 2002-03-19
  • 打赏
  • 举报
回复
不行的,取不到属性,你有QQ吗,我的:12229559,交流快点
chechy 2002-03-19
  • 打赏
  • 举报
回复
我的第一种方法试过了吗?那是笨办法,但是应该是正确的啊。
Jeelen 2002-03-19
  • 打赏
  • 举报
回复
还是不行,我用的是旧版本的,ie5.0下的
根本取不到属性
chechy 2002-03-19
  • 打赏
  • 举报
回复
这个方法其实我觉得很笨,如果用
<input><xsl:copy-of select="@*"/></input>
就可以完全替代。
不过你好像使用的旧的MSXSL,而不是现在地XSLT1.0
chechy 2002-03-19
  • 打赏
  • 举报
回复
<xsl:template match="input">
<xsl:value-of select="."/>
<input>
<xsl:attribute name="name"><xsl:value-of select="@name"/></xsl:attribute>
<xsl:attribute name="type"><xsl:value-of select="@type"/></xsl:attribute>
<xsl:attribute name="size"><xsl:value-of select="@size"/></xsl:attribute>
<xsl:attribute name="value"><xsl:value-of select="@value"/></xsl:attribute>
</input>
</xsl:template>
eclipse-testng 离线包 <xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:math="http://exslt.org/math" xmlns:testng="http://testng.org"> <xsl:output method="html" indent="yes" omit-xml-declaration="yes" doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"/> <xsl:output name="text" method="text"/> <xsl:output name="xml" method="xml" indent="yes"/> <xsl:output name="html" method="html" indent="yes" omit-xml- declaration="yes"/> <xsl:output name="xhtml" method="xhtml" indent="yes" omit-xml-declaration="yes"/> <xsl:param name="testNgXslt.outputDir"/> <xsl:param name="testNgXslt.cssFile"/> <xsl:param name="testNgXslt.showRuntimeTotals"/> <xsl:param name="testNgXslt.reportTitle"/> <xsl:param name="testNgXslt.sortTestCaseLinks"/> <xsl:param name="testNgXslt.chartScaleFactor"/> <xsl:param name="testNgXslt.testDetailsFilter"/> <xsl:variable name="testDetailsFilter" select="if ($testNgXslt.testDetailsFilter) then $testNgXslt.testDetailsFilter else 'FAIL,PASS,SKIP'"/> <xsl:variable name="chartWidth" select="round(600 * testng:getVariableSafe($testNgXslt.chartScaleFactor, 1))"/> <xsl:variable name="chartHeight" select="round(200 * testng:getVariableSafe($testNgXslt.chartScaleFactor, 1))"/> <xsl:template name="writeCssFile"> <xsl:result- document href="{testng:absolutePath('style.css')}" format="text"> <xsl:choose> <xsl:when test="testng:isFilterSelected('CONF') = 'true'"> .testMethodStatusCONF { } xsl:when> <xsl:otherwise> .testMethodStatusCONF { display: none; } xsl:otherwise> xsl:choose> <xsl:choose> <xsl:when test="testng:isFilterSelected('FAIL') = 'true'"> .testMethodStatusFAIL { background-color: #FFBBBB; } xsl:when> <xsl:otherwise> .testMethodStatusFAIL { background-color: #FFBBBB; display: none; } xsl:otherwise> xsl:choose> <xsl:choose> <xsl:when test="testng:isFilterSelected ('PASS') = 'true'"> .testMethodStatusPASS { background-color: lightgreen; } xsl:when> <xsl:otherwise> .testMethodStatusPASS { background-color: lightgreen; display: none; } xsl:otherwise> xsl:choose> <xsl:choose> <xsl:when test="testng:isFilterSelected('SKIP') = 'true'"> .testMethodStatusSKIP { background-color: #FFFFBB; } xsl:when> <xsl:otherwise> .testMethodStatusSKIP { background-color: #FFFFBB; display: none; } xsl:otherwise> xsl:choose> xsl:result-document> xsl:template> <xsl:template name="writeJsFile"> <xsl:result-document href="{testng:absolutePath('main.js')}" format="text"> -1) { document.styleSheets[i][rules][j].style[element] = value; break; } } } } function closeAllExpandedDetails() { var node = document.getElementsByTagName("body")[0]; //var re = new RegExp("\ \btestMethodDetailsVisible\\b"); var els = document.getElementsByTagName("div"); for (var i = 0,j = els.length; i < j; i++) { if (els[i].className == "testMethodDetailsVisible") { els[i].className = "testMethodDetails"; } } } function renderSvgEmbedTag(chartWidth, chartHeight) { var success = false; var userAgent = navigator.userAgent; if (userAgent.indexOf("Firefox") > -1 || userAgent.indexOf("Safari") > -1) { success = true; } else if (navigator.mimeTypes != null && navigator.mimeTypes.length > 0) { if (navigator.mimeTypes["image/svg+xml"] != null) { success = true; } } else if (window.ActiveXObject) { try { testObj = new ActiveXObject("Adobe.SVGCtl"); success = true; } catch (e) {} } var chartContainer = document.getElementById('chart-container'); if (success) { var chart = document.createElement('embed'); chart.src = 'overview-chart.svg'; chart.type = 'image/svg+xml'; chart.width = chartWidth; chart.height = chartHeight; chartContainer.appendChild(chart); } else { var message = document.createElement('h4'); var text = document.createTextNode('SVG Pie Charts are not available. Please install a SVG viewer for your browser.'); message.style.color = 'navy'; message.appendChild(text); chartContainer.appendChild(message); } } ]]> xsl:result- document> xsl:template> <xsl:template name="htmlHead"> <<em>xsl</em>:value- of select="testng:getVariableSafe($testNg<em>Xsl</em>t.reportTitle, 'TestNG Results')"/> <xsl:if test="$testNgXslt.cssFile"> xsl:if> <script type="text/javascript" src="main.js"/> xsl:template> <xsl:function name="testng:getVariableSafe"> <xsl:param name="testVar"/> <xsl:param name="defaultValue"/> <xsl:value-of select="if ($testVar) then $testVar else $defaultValue"/> xsl:function> <xsl:function name="testng:trim"> <xsl:param name="arg"/> <xsl:sequence select="replace(replace($arg,'\s+$',''),'^\s +','')"/> xsl:function> <xsl:function name="testng:absolutePath"> <xsl:param name="fileName"/> <xsl:value-of select="concat('file:////', $testNgXslt.outputDir, '/', $fileName)"/> xsl:function> <xsl:function name="testng:safeFileName"> <xsl:param name="fileName"/> <xsl:value-of select="translate($fileName, '[]{}`~! @#$%^*(){};?/\|' , '______________________')"/> xsl:function> <xsl:function name="testng:suiteContentFileName"> <xsl:param name="suiteElement"/> <xsl:value-of select="testng:safeFileName(concat($suiteElement/@name, '.html'))"/> xsl:function> <xsl:function name="testng:suiteGroupsFileName"> <xsl:param name="suiteElement"/> <xsl:value-of select="testng:safeFileName(concat($suiteElement/@name, '_groups.html'))"/> xsl:function> <xsl:function name="testng:testCaseContentFileName"> <xsl:param name="testCaseElement"/> <xsl:value-of select="testng:safeFileName(concat($testCaseElement/../@name, '_', $testCaseElement/@name, '.html'))"/> xsl:function> <xsl:function name="testng:concatParams"> <xsl:param name="params"/> <xsl:variable name="outputString"> <xsl:value-of separator="," select="for $i in ($params) return $i"/> xsl:variable> <xsl:value-of select="$outputString"/> xsl:function> <xsl:function name="testng:testMethodStatus"> <xsl:param name="testMethodElement"/> <xsl:variable name="status" select="$testMethodElement/@status"/> <xsl:variable name="statusClass" select="concat('testMethodStatus', $status)"/> <xsl:value-of select="if ($testMethodElement/@is-config) then concat($statusClass, ' testMethodStatusCONF') else $statusClass"/> xsl:function> <xsl:function name="testng:suiteMethodsCount"> <xsl:param name="testCasesElements"/> <xsl:param name="state"/> <xsl:value-of select="if ($state = '*') then count($testCasesElements/class/test- method[not(@is-config)]) else count($testCasesElements/class/test-method[(@status=$state) and (not(@is-config))])"/> xsl:function> <xsl:function name="testng:testCaseMethodsCount"> <xsl:param name="testCaseElement"/> <xsl:param name="state"/> <xsl:value-of select="if ($state = '*') then count ($testCaseElement/class/test-method[not(@is-config)]) else count($testCaseElement/class/test-method[(@status=$state) and (not(@is-config))])"/> xsl:function> <xsl:function name="testng:suiteStateClass"> <xsl:param name="testCaseElements"/> <xsl:value-of select="if (count($testCaseElements/class/test-method[(@status='FAIL') and (not(@is-config))]) > 0) then 'suiteStatusFail' else 'suiteStatusPass'"/> xsl:function> <xsl:function name="testng:methodsDuration"> <xsl:param name="testMethods"/> <xsl:variable name="durationMs" select="sum ($testMethods/@duration-ms)"/> <xsl:value-of select="testng:formatDuration($durationMs)"/> xsl:function> <xsl:function name="testng:formatDuration"> <xsl:param name="durationMs"/> <xsl:if test="$durationMs > 86400000"> <xsl:value-of select="format-number($durationMs div 86400000, '#')"/>d xsl:if> <xsl:if test="($durationMs > 3600000) and ($durationMs mod 86400000 > 1000)"> <xsl:value-of select="format-number(($durationMs mod 86400000) div 3600000, '#')"/>h xsl:if> <xsl:if test="$durationMs < 86400000"> <xsl:if test="($durationMs > 60000) and ($durationMs mod 3600000 > 1000)"> <xsl:value-of select="format-number(($durationMs mod 3600000) div 60000, '#')"/>m xsl:if> <xsl:if test="($durationMs > 1000) and ($durationMs mod 60000 > 1000)"> <xsl:value-of select="format-number(($durationMs mod 60000) div 1000, '#')"/>s xsl:if> xsl:if> <xsl:if test="$durationMs < 1000"> <xsl:value-of select="$durationMs"/> ms xsl:if> xsl:function> <xsl:function name="testng:isFilterSelected"> <xsl:param name="filterName"/> <xsl:value-of select="contains ($testDetailsFilter, $filterName)"/> xsl:function> <xsl:template name="formField"> <xsl:param name="label"/> <xsl:param name="value"/> <xsl:if test="$value">
<xsl:value-of select="$label"/>: <xsl:value-of select="$value"/>
xsl:if> xsl:template> <xsl:template name="formFieldList"> <xsl:param name="label"/> <xsl:param name="value"/> <xsl:if test="count($value) > 0">
<xsl:value- of select="$label"/>: <xsl:for-each select="$value">
    - <xsl:value-of select="."/>
xsl:for-each>
xsl:if> xsl:template> <xsl:template match="/testng-results"> <xsl:call-template name="writeCssFile"/> <xsl:call-template name="writeJsFile"/> <xsl:call-template name="htmlHead"/> <xsl:variable name="suiteElements" select="if (suite/@url) then document(suite/@url)/suite else suite"/> <xsl:call-template name="navigationFile"> <xsl:with-param name="suiteElements" select="$suiteElements"/> <xsl:with-param name="reporterOutputElement" select="reporter-output"/> xsl:call-template> <xsl:result-document href="{testng:absolutePath('overview- chart.svg')}" format="xml"> <xsl:variable name="testCaseElements" select=" if (suite/@url) then if (document (suite/@url)/suite/test/@url) then document(document(suite/@url)/suite/test/@url)/test else document(suite/@url)/suite/test else suite/test"/> <xsl:variable name="failedCount" select="testng:suiteMethodsCount($testCaseElements, 'FAIL')"/> <xsl:variable name="passedCount" select="testng:suiteMethodsCount($testCaseElements, 'PASS')"/> <xsl:variable name="skippedCount" select="testng:suiteMethodsCount($testCaseElements, 'SKIP')"/> <xsl:variable name="totalCount" select="testng:suiteMethodsCount($testCaseElements, '*')"/> <xsl:variable name="pi" select="3.141592"/> <xsl:variable name="radius" select="130"/> <xsl:variable name="failedPercent" select="format-number($failedCount div $totalCount, '###%')"/> <xsl:variable name="failedAngle" select="($failedCount div $totalCount) * $pi * 2"/> <xsl:variable name="failedX" select="$radius * math:cos($failedAngle)"/> <xsl:variable name="failedY" select="-1 * $radius * math:sin($failedAngle)"/> <xsl:variable name="failedArc" select="if ($failedAngle >= $pi) then 1 else 0"/> <xsl:variable name="failedAngle_text" select="$failedAngle div 2"/> <xsl:variable name="failedX_text" select="($radius div 2) * math:cos($failedAngle_text)"/> <xsl:variable name="failedY_text" select="(-1 * ($radius div 2) * math:sin($failedAngle_text))"/> <xsl:variable name="passPercent" select="format-number($passedCount div $totalCount, '###%')"/> <xsl:variable name="passAngle" select="($passedCount div $totalCount) * $pi * 2"/> <xsl:variable name="passX" select="$radius * math:cos($passAngle)"/> <xsl:variable name="passY" select="-1 * $radius * math:sin ($passAngle)"/> <xsl:variable name="passArc" select="if ($passAngle >= $pi) then 1 else 0"/> <xsl:variable name="skipPercent" select="format-number($skippedCount div $totalCount, '###%')"/> <xsl:variable name="skipAngle" select="($skippedCount div $totalCount) * $pi * 2"/> <xsl:variable name="skipX" select="$radius * math:cos($skipAngle)"/> <xsl:variable name="skipY" select="-1 * $radius * math:sin($skipAngle)"/> <xsl:variable name="skipArc" select="if ($skipAngle >= $pi) then 1 else 0"/> Failed (<xsl:value-of select="$failedPercent"/>) Passed (<xsl:value-of select="$passPercent"/>) Skipped (<xsl:value-of select="$skipPercent"/>) <xsl:variable name="failedRotation" select="(($skippedCount) div $totalCount) * 360"/> <xsl:if test="($failedCount div $totalCount) > 0"> xsl:if> <xsl:variable name="passRotation" select="(($failedCount + $skippedCount) div $totalCount) * 360"/> <xsl:if test="($passedCount div $totalCount) > 0"> xsl:if> <xsl:if test="($skippedCount div $totalCount) > 0"> xsl:if> xsl:result-document> <xsl:result-document href="{testng:absolutePath('overview.html')}" format="xhtml"> <xsl:call-template name="htmlHead"/>

Test suites overview

<script type="text/javascript"> renderSvgEmbedTag(<xsl:value-of select="$chartWidth"/>, <xsl:value-of select="$chartHeight"/>);
<xsl:for-each select="$suiteElements"> <xsl:variable name="testCaseElements" select="if (test/@url) then document(test/@url)/test else test"/> <xsl:call-template name="percentageOverview"> <xsl:with-param name="failedCount" select="testng:suiteMethodsCount($testCaseElements, 'FAIL')"/> <xsl:with-param name="passedCount" select="testng:suiteMethodsCount ($testCaseElements, 'PASS')"/> <xsl:with-param name="skippedCount" select="testng:suiteMethodsCount($testCaseElements, 'SKIP')"/> <xsl:with-param name="totalCount" select="testng:suiteMethodsCount ($testCaseElements, '*')"/> <xsl:with-param name="totalDuration" select="testng:methodsDuration($testCaseElements/class/test-method)"/> xsl:call-template> <xsl:for-each select="$testCaseElements"> <xsl:if test="compare($testNgXslt.showRuntimeTotals, 'true') = 0"> xsl:if> xsl:for-each>
<xsl:value-of select="@name"/>
<xsl:value-of select="@name"/> <xsl:value-of select="testng:testCaseMethodsCount(., 'FAIL')"/> <xsl:value-of select="testng:testCaseMethodsCount(., 'PASS')"/> <xsl:value-of select="testng:testCaseMethodsCount(., 'SKIP')"/> <xsl:value-of select="testng:testCaseMethodsCount(., '*')"/> <xsl:value-of select="if (testng:testCaseMethodsCount(., '*') > 0) then format-number(testng:testCaseMethodsCount(., 'PASS') div testng:testCaseMethodsCount(., '*'), '###%') else '100%'"/> <xsl:value-of select="testng:methodsDuration(./class/test-method)"/>

xsl:for-each> <xsl:call- template name="powered-by"/> xsl:result-document> <xsl:result-document href="{testng:absolutePath('reporterOutput.html')}" format="xhtml"> <xsl:call-template name="htmlHead"/>

Reporter output

<xsl:for-each select="reporter-output/line">
<xsl:value-of select="."/>
xsl:for-each> <xsl:call-template name="powered-by"/> xsl:result-document> xsl:template> <xsl:template name="navigationFile"> <xsl:param name="suiteElements"/> <xsl:param name="reporterOutputElement"/> <xsl:result-document href="{testng:absolutePath('navigation.html')}" format="xhtml"> <xsl:call-template name="htmlHead"/>

<xsl:value-of select="testng:getVariableSafe($testNgXslt.reportTitle, 'TestNG Results')"/>

<xsl:for-each select="$suiteElements"> <xsl:variable name="testCaseElements" select="if (test/@url) then document(test/@url)/test else test"/>
<xsl:value-of select="@name"/> <xsl:value-of select="testng:suiteMethodsCount($testCaseElements, 'FAIL')"/> / <xsl:value-of select="testng:suiteMethodsCount ($testCaseElements, 'PASS')"/> / <xsl:value-of select="testng:suiteMethodsCount($testCaseElements, 'SKIP')"/> / <xsl:value-of select="testng:suiteMethodsCount($testCaseElements, '*')"/> <xsl:value-of select="format-number (testng:suiteMethodsCount($testCaseElements, 'PASS') div testng:suiteMethodsCount($testCaseElements, '*'), '###%')"/>
<xsl:call-template name="suiteContentFile"> <xsl:with-param name="suiteElement" select="."/> xsl:call-template> <xsl:call-template name="suiteGroupsFile"> <xsl:with-param name="suiteElement" select="."/> xsl:call-template> <xsl:call-template name="suiteTestCasesLinks"> <xsl:with-param name="testCases" select="$testCaseElements"/> xsl:call-template> <xsl:call-template name="suiteTestCasesContentFiles"> <xsl:with-param name="testCases" select="$testCaseElements"/> xsl:call-template> xsl:for-each>
xsl:result-document> xsl:template> <xsl:template name="suiteContentFile"> <xsl:param name="suiteElement"/> <xsl:variable name="testCaseElements" select="if (test/@url) then document(test/@url)/test else test"/> <xsl:result-document href="{testng:absolutePath(testng:suiteContentFileName($suiteElement))}" format="xhtml"> <xsl:call-template name="htmlHead"/> <xsl:call-template name="percentageOverview"> <xsl:with-param name="failedCount" select="testng:suiteMethodsCount($testCaseElements, 'FAIL')"/> <xsl:with-param name="passedCount" select="testng:suiteMethodsCount ($testCaseElements, 'PASS')"/> <xsl:with-param name="skippedCount" select="testng:suiteMethodsCount($testCaseElements, 'SKIP')"/> <xsl:with-param name="totalCount" select="testng:suiteMethodsCount ($testCaseElements, '*')"/> <xsl:with-param name="totalDuration" select="testng:methodsDuration($testCaseElements/class/test-method)"/> xsl:call-template>
All methods in suite <xsl:value-of select="./@name"/>
<xsl:call-template name="testMethods"> <xsl:with-param name="classes" select="$testCaseElements/class"/> <xsl:with-param name="failedMethods" select="$testCaseElements/class/test-method[@status='FAIL']"/> <xsl:with-param name="passedMethods" select="$testCaseElements/class/test-method[@status='PASS']"/> <xsl:with-param name="skipedMethods" select="$testCaseElements/class/test-method[@status='SKIP']"/> xsl:call-template> <xsl:call-template name="powered-by"/> xsl:result-document> xsl:template> <xsl:template name="suiteGroupsFile"> <xsl:param name="suiteElement"/> <xsl:result-document href="{testng:absolutePath(testng:suiteGroupsFileName($suiteElement))}" format="xhtml"> <xsl:call-template name="htmlHead"/>

Groups for suite: <xsl:value-of select="$suiteElement/@name"/>

<xsl:for-each select="$suiteElement/groups/group"> <xsl:sort order="ascending" select="@name"/> <xsl:for-each select="method"> xsl:for-each>
<xsl:value-of select="./@name"/>
<xsl:value-of select="@signature"/>
xsl:for-each> <xsl:call-template name="powered-by"/> xsl:result-document> xsl:template> <xsl:template name="testMethods"> <xsl:param name="classes"/> <xsl:param name="failedMethods"/> <xsl:param name="passedMethods"/> <xsl:param name="skipedMethods"/> <xsl:param name="filePrefix"/>


<xsl:if test="testng:isFilterSelected('BY_CLASS') = 'true'"> <xsl:attribute name="style" select="'display: none;'"/> xsl:if> <xsl:call-template name="testMethodsList"> <xsl:with-param name="methodList" select="$failedMethods"/> <xsl:with-param name="category" select="'byStatus_failed'"/> xsl:call-template> <xsl:call-template name="testMethodsList"> <xsl:with-param name="methodList" select="$passedMethods"/> <xsl:with-param name="category" select="'byStatus_passed'"/> xsl:call-template> <xsl:call-template name="testMethodsList"> <xsl:with-param name="methodList" select="$skipedMethods"/> <xsl:with-param name="category" select="'byStatus_skiped'"/> xsl:call-template>
Name Started Duration Exception
<xsl:if test="testng:isFilterSelected('BY_CLASS') != 'true'"> <xsl:attribute name="style" select="'display: none;'"/> xsl:if> <xsl:for-each select="$classes"> <xsl:sort order="ascending" select="@name"/> <xsl:call-template name="testMethodsList"> <xsl:with- param name="methodList" select="./test-method"/> <xsl:with-param name="category" select="'byClass'"/> <xsl:with-param name="sortByStartTime" select="'true'"/> xsl:call-template>

<xsl:value-of select="./@name"/>

Name Started Duration Exception

xsl:for-each>
xsl:template> <xsl:template name="testMethodsList"> <xsl:param name="methodList"/> <xsl:param name="category"/> <xsl:param name="sortByStartTime"/> <xsl:for-each select="$methodList"> <xsl:sort order="ascending" select="if (compare($sortByStartTime, 'true') = 0) then @started-at else ''"/> <xsl:variable name="methodId" select="concat(../@name, '_', @name, '_', $category, '_', @status, position())"/> <xsl:variable name="detailsId" select="concat($methodId, '_details')"/> <xsl:variable name="exceptionDetailsId" select="concat($methodId, '_exception')"/> <xsl:if test="testng:isFilterSelected(@status) != 'true'"> xsl:if> <xsl:value-of select="concat(@name, '(', testng:trim(testng:concatParams(./params/param)), ')')"/> <xsl:value-of select="substring(@started-at, 12, 8)"/> <xsl:value-of select="testng:formatDuration(@duration-ms)"/> <xsl:if test="./exception"> <xsl:value-of select="concat(exception/@class, ': ', exception/message)"/> xsl:if>  
<xsl:call-template name="formField"> <xsl:with-param name="label" select="'Name'"/> <xsl:with-param name="value" select="@name"/> xsl:call-template> <xsl:call-template name="formField"> <xsl:with-param name="label" select="'Description'"/> <xsl:with-param name="value" select="@description"/> xsl:call-template> <xsl:call-template name="formField"> <xsl:with-param name="label" select="'Signature'"/> <xsl:with-param name="value" select="@signature"/> xsl:call-template> <xsl:if test="./params"> <xsl:call-template name="formField"> <xsl:with-param name="label" select="'Parameters'"/> <xsl:with-param name="value" select="testng:concatParams(./params/param)"/> xsl:call- template> xsl:if> <xsl:call-template name="formField"> <xsl:with-param name="label" select="'Start time'"/> <xsl:with-param name="value" select="substring(@started-at, 12, 8)"/> xsl:call-template> <xsl:call- template name="formField"> <xsl:with-param name="label" select="'End time'"/> <xsl:with-param name="value" select="substring(@finished-at, 12, 8)"/> xsl:call-template> <xsl:call-template name="formField"> <xsl:with-param name="label" select="'Duration'"/> <xsl:with-param name="value" select="testng:formatDuration(@duration- ms)"/> xsl:call-template> <xsl:call-template name="formField"> <xsl:with-param name="label" select="'In groups:'"/> <xsl:with-param name="value" select="@groups"/> xsl:call-template> <xsl:if test="@depends-on-methods"> <xsl:call-template name="formFieldList"> <xsl:with-param name="label" select="'Depends on methods'"/> <xsl:with-param name="value" select="tokenize(@depends-on-methods, ',')"/> xsl:call-template> xsl:if> <xsl:if test="@depends-on-groups"> <xsl:call-template name="formFieldList"> <xsl:with-param name="label" select="'Depends on groups'"/> <xsl:with-param name="value" select="tokenize(@depends-on-groups, ',')"/> xsl:call-template> xsl:if>
<xsl:if test="exception">
<xsl:choose> <xsl:when test="exception/full-stacktrace">
                                        <xsl:value-of select="testng:trim

(exception/full-stacktrace)"/>
                                    
xsl:when> <xsl:when test="exception/short-stacktrace and not (exception/full-stacktrace)">
                                        <xsl:value-of 

select="testng:trim(exception/short-stacktrace)"/>
                                    
xsl:when> <xsl:otherwise>
<No stacktrace information>
xsl:otherwise> xsl:choose>
xsl:if> xsl:for-each> xsl:template> <xsl:template name="suiteTestCasesLinks"> <xsl:param name="testCases"/> <xsl:for-each select="$testCases"> <xsl:sort order="ascending" select="if (compare ($testNgXslt.sortTestCaseLinks, 'true') = 0) then @name else ''"/> xsl:for- each> xsl:template> <xsl:template name="suiteTestCasesContentFiles"> <xsl:param name="testCases"/> <xsl:for-each select="$testCases"> <xsl:result-document href="{testng:absolutePath (testng:testCaseContentFileName(.))}" format="xhtml"> <xsl:call-template name="htmlHead"/> <xsl:call-template name="percentageOverview"> <xsl:with-param name="failedCount" select="testng:testCaseMethodsCount(., 'FAIL')"/> <xsl:with-param name="passedCount" select="testng:testCaseMethodsCount(., 'PASS')"/> <xsl:with-param name="skippedCount" select="testng:testCaseMethodsCount(., 'SKIP')"/> <xsl:with-param name="totalCount" select="testng:testCaseMethodsCount(., '*')"/> <xsl:with-param name="totalDuration" select="testng:methodsDuration(./class/test-method)"/> xsl:call-template>
Test case <xsl:value-of select="./@name"/>
<xsl:call-template name="testMethods"> <xsl:with-param name="classes" select="./class"/> <xsl:with-param name="failedMethods" select="./class/test-method[@status='FAIL']"/> <xsl:with-param name="passedMethods" select="./class/test-method[@status='PASS']"/> <xsl:with-param name="skipedMethods" select="./class/test-method[@status='SKIP']"/> xsl:call-template> <xsl:call-template name="powered-by"/> xsl:result-document> xsl:for-each> xsl:template> <xsl:template name="percentageOverview"> <xsl:param name="failedCount"/> <xsl:param name="passedCount"/> <xsl:param name="skippedCount"/> <xsl:param name="totalCount"/> <xsl:param name="totalDuration"/>
<xsl:value-of select="$failedCount"/>
<xsl:value-of select="$passedCount"/>
<xsl:value-of select="$skippedCount"/>
<xsl:value-of select="$totalCount"/>
<xsl:value-of select="if ($totalCount > 0) then format-number($passedCount div $totalCount, '###%') else '100%'"/>
<xsl:if test="compare($testNgXslt.showRuntimeTotals, 'true') = 0"> <xsl:value-of select="$totalDuration"/> xsl:if> xsl:template> <xsl:template name="powered-by">
Generated with TestNG XSLT
xsl:template> xsl:stylesheet>
动易标签说明 信息概览 调用范例 参数细目 查询语句 转换模板 附加信息 图片一列式栏目上下循环 标签名称: 图片一列式栏目上下循环 调用标签名: {PE.Label id="图片一列式栏目上下循环"/} 数据源调用标签名: {PE.DataSource id="cone" datasource="图片一列式栏目上下循环" /} 标签分类: 栏目类 标签文件大小: 3K 更新时间: 2010/3/29 9:36:04 解析方式: 简单XSLT解析 数据设置: 系统数据库SQL查询 官方版本: 3.5.0.0 兼容版本: 3.5.0.0 是否具有分页功能: 否 是否启用XSLT查询: 否 是否启用XSLT统计: 否 是否允许Ajax访问: 否 标签说明: 图片一列式栏目上下循环 调用说明: ·分页需要开启参数usePage="true"。 ·双击可以直接复制调用代码至剪贴板。 ·绑定样式系列的查询标签分页标签数据源为 当前调用的标签+_+样式标签。 ·部分列表类标签支持节点配置托管,每页的分页数量可由节点配置。 ·移除和默认值相等的参数将会提升性能;不需要改变默认值的参数就尽量不要调用它。 普通调用方法: {PE.Label id="图片一列式栏目上下循环" outputQty="10" parentId="2" titleLength="60" hits="0" eliteLevel="0" linkOpenType="2" /} 分页调用方法: 该标签不具备分页功能 数据源调用方法: {PE.DataSource id="cone" datasource="图片一列式栏目上下循环" outputQty="10" parentId="2" titleLength="60" hits="0" eliteLevel="0" linkOpenType="2" /} 属性 参数类型 默认值 可用值 变量值 参数说明 outputQty - 10 自定义值 - 输出的项目数量,如果开启分页,则此参数为分页大小值 parentId - 2 自定义值,支持数组 @RequestInt_Id 父栏目ID titleLength - 60 自定义值 - 项目标题长度,一个汉字占两个字节 hits - 0 自定义值 - 点击数大于等于指定值的项目 eliteLevel - 0 自定义值 - 推荐级大于等于指定值的项目 linkOpenType - 2 自定义值 - 内容链接的打开方式{栏目节点配置取代:2,新窗口:1,原窗口:0} 查询语句: view sourceprint?1.SELECT TOP @pagesize * FROM PE_Nodes N WHERE N.NodeID NOT IN (SELECT TOP @startrow [IN].NodeID FROM PE_Nodes [IN] WHERE [IN].ParentID = @parentId AND [IN].ShowOnList_Parent = 1 AND [IN].PurviewType != 3 ORDER BY [IN].OrderID) AND N.ParentID = @parentId AND N.ShowOnList_Parent = 1 AND N.PurviewType != 3 ORDER BY N.OrderID 统计语句: view sourceprint?1.SELECT COUNT ([IN].NodeID) FROM PE_Nodes [IN] WHERE [IN].ParentID = @parentId AND [IN].ShowOnList_Parent = 1 AND [IN].PurviewType != 3 分页语句: view sourceprint?1.还没有相关数据! 转换模板内容: view sourceprint?01. 02.<XSL:TRANSFORM exclude-result-prefixes="pe" xmlns:pe="labelproc" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> 03. <XSL:OUTPUT method="html" /> 04. <XSL:PARAM name="outputQty" /> 05. <XSL:PARAM name="parentId" /> 06. <XSL:PARAM name="titleLength" /> 07. <XSL:PARAM name="hits" /> 08. <XSL:PARAM name="eliteLevel" /> 09. <XSL:PARAM name="linkOpenType" /> 10. <XSL:TEMPLATE match="/"> 11. <XSL:FOR-EACH select="/NewDataSet/Table"> 12.
13.
14.
15. 29.
30.
31.
    {PE.DataSource id="InfoList<XSL:VALUE-OF select="NodeID" />" datasource="图片栏目循环列表信息" nodeArray="<XSL:VALUE-OF select="arrChildID" />" parentId="<XSL:VALUE-OF select="$parentId" />" outputQty="<XSL:VALUE-OF select="$outputQty" />" hits="<XSL:VALUE-OF select="$hits" />" eliteLevel="<XSL:VALUE-OF select="$eliteLevel" />" linkOpenType="<XSL:VALUE-OF select="$linkOpenType" />" xslt="true" /} 32.{PE.Repeat id="InfoList<XSL:VALUE-OF select="NodeID" />" loop="10"} 33.
  • 34.{PE.field id="InfoList<XSL:VALUE-OF select="NodeID" />" fieldname="DefaultPicUrl" /} 35.
    36.{PE.field id="InfoList<XSL:VALUE-OF select="NodeID" />" fieldname="InfoPath" /} 37. 38.{/PE.Repeat} 39.
40.
41.
42.
43.
44.
45. XSL:FOR-EACH> 46. XSL:TEMPLATE> 47.XSL:TRANSFORM> 附加说明: - 注意事项: - 使用说明: - 更新日志: - 相关链接: -
第一部分 XML简介... 9
第1章 XML概览... 9
1.1 什么是XML. 10
1.1.1 XML是元标记语言... 10
1.1.2 XML描述的是结构和语义,而不是格式化... 10
1.2 为什么开发人员对XML感到激动... 13
1.2.1 设计与特定领域有关的标记语言... 13
1.2.2 自描述数据... 13
1.2.3 应用间交换数据... 14
1.2.4 结构化和集成的数据... 14
1.3 XML文档的“生命”. 15
1.3.1 编辑器... 15
1.3.2 语法分析程序和处理程序... 15
1.3.3 浏览器和其他工具... 15
1.3.4 处理过程总结... 15
4 相关技术... 17
1.4.1 超文本标记语言(Hypertext Markup Language)... 17
1.4.2 级联样式单(Cascading Style Sheets)... 17
1.4.3 可扩展的样式语言(Extensible Style Language)... 17
1.4.4 URL和URI 18
1.4.5 XLink和XPointer 18
1.4.6 Unicode字符集... 19
1.4.7 如何将这些技术融合在一起... 19
1.5 本章小结... 20
第2章 XML应用简介... 21
2.1 什么是XML应用程序... 21
2.1.1 化学标记语言(Chemical Markup Language)... 21
2.1.2 数学标记语言(Mathematical Markup Language)... 22
2.1.3 频道定义格式... 25
2.1.4 经典文学... 26
2.2 用于XML的XML. 28
2.2.1 XSL. 28
2.2.2 XLL. 28
2.2.3 DCD.. 29
2.3 XML的后台应用... 30
2.4 本章小结... 33
第3章 第一个XML文档... 34
3.1 Hello XML. 34
3.1.1 创建一个简单的XML文档... 34
3.1.2 保存XML文件... 35
3.1.3 将XML文件装入Web浏览器... 35
.2 考察简单的XML文档... 37
3.3 赋于XML标记以意义... 39
.4 为XML文档编写样式单... 40
.5 将样式单附加到XML文档上... 41
3.6 本章小结... 43
第4章 数据的结构化... 44
4.1 检查数据... 44
4.1.1 击球手... 44
4.1.2 投球手... 46
4.1.3 XML数据的组织... 46
4.2 数据的XML化... 48
4.2.1 开始编写文档:XML声明和根元素... 48
4.2.2 联赛(League)、(分部)Division和(球队)Team数据的XML化... 49
4.2.3 球员数据的XML化... 52
4.2.4 球员统计数据的XML化... 53
4.2.5 将XML组装在一起... 56
4.3 XML格式的优点... 71
4.4 编制样式单以便显示文档... 72
4.4.1 与样式单连接... 73
4.4.2 为根元素指定样式规则... 74
4.4.3 为标题指定样式规则... 75
4.4.4 为球员和统计元素指定样式规则... 79
4.4.5 本节小结... 80
4.5 本章小结... 85
第5章 属性、空标记和XSL. 86
5.1 属性... 86
5.2 属性与元素的对比... 95
5.2.1 结构化的元数据... 95
5.2.2 元元数据... 99
5.2.3 有关元数据的说明... 100
5.2.4 元素更具扩展性... 100
5.2.5 使用属性的最佳时机... 100
5.3 空标记... 102
5.4 XSL. 103
5.4.1 XSL样式单模板... 103
5.4.2 文档的主体... 104
5.4.3 标题... 106
5.4.4 联赛、分部和球队... 108
5.4.5 球员... 114
5.4.6 区分投手与击球手... 117
5.4.7 元素内容与select属性... 125
5.4.8 CSS还是XSL. 129
5.5 本章小结... 130
第6章 结构完整的XML文档... 131
6.1 XML文档的组成... 131
6.2 置标和字符数据... 132
6.2.1 注释... 132
6.2.2 实体引用... 134
6.2.3 CDATA. 135
6.2.4 标记... 136
6.2.5 属性... 138
6.3 独立文档中结构完整的XML. 140
6.4 结构完整的HTML. 145
6.4.1 现实的Web页面存在的问题... 145
6.4.2 HTML整理工具... 153
6.5 本章小结... 156
第7章 外文和非罗马文本... 157
7.1 Web上的非罗马文字... 157
.2 文字、字符集、字体和字形... 161
7.2.1 文字的字符集... 161
7.2.2 字符集的字体... 161
7.2.3 字符集的输入法... 161
7.2.4 操作系统和应用软件... 162
7.3传统字符集... 163
7.3.1 ASCII字符集... 163
7.3.2 ISO字符集... 164
7.3.3 MacRoman字符集... 166
7.3.4 Windows ANSI字符集... 167
7.4 Unicode字符集... 169
7.4.1 UTF-8. 171
7.4.2 通用字符系统... 171
7.5 如何使用Unicode编写XML. 173
7.5.1 利用字符引用在XML文件中插入字符... 173
7.5.2 其他字符集与Unicode字符集之间的转换... 173
7.5.3 如何使用其他字符集编写XML. 174
7.6 本章小结... 176
第二部分 文档类型定义... 177
第8章 文档类型定义和合法性... 177
8.1 文档类型定义... 177
8.2 文档类型声明... 179
8.3 根据DTD的合法性检验... 182
8.4 列出元素... 187
8.5 元素声明... 195
8.5.1 ANY. 195
8.5.2 #PCDATA. 195
8.5.3 子元素列表... 198
8.5.4 序列... 200
8.5.5 一个或多个子元素... 200
8.5.6 零或多个子元素... 201
8.5.7 零或一个子元素... 201
8.5.8 完整的文档和DTD.. 203
8.5.9 选择... 214
8.5.10 带括号的子元素... 215
8.5.11 混合内容... 217
8.5.12 空元素... 218
8.6 DTD中的注释... 220
8.7 在文档间共享通用的DTD.. 228
8.7.1 远程URL上的DTD.. 235
8.7.2 公共的DTD.. 236
8.7.3 内部和外部DTD子集... 237
8.8 本章小结... 241
第9章 实体和外部DTD子集... 242
9.1 什么是实体?... 242
.2 内部通用实体... 244
9.2.1 定义内部通用实体引用... 244
9.2.2 在DTD中使用通用实体引用... 246
9.2.3 预定义通用实体引用... 247
9.3 外部通用实体... 248
.4 内部参数实体... 251
9.5 外部参数实体... 253
.6 根据片段创建文档... 260
9.7 结构完整的文档中的实体和DTD.. 274
9.7.1 内部实体... 274
9.7.2 外部实体... 276
9.8 本章小结... 283
第10章 DTDs中的属性声明... 284
10.1 什么是属性?... 284
10.2 在DTD中声明属性... 285
10.3 声明多个属性... 287
10.4 指定属性的缺省值... 288
10.4.1 #REQUIRED.. 288
10.4.2 #IMPLIED.. 288
10.4.3 #FIXED.. 289
10.5 属性类型... 290
10.5.1 CDATA属性类型... 290
10.5.2 Enumerated属性类型... 290
10.5.3 NMTOKEN属性类型... 291
10.5.4 NMTOKENS属性类型... 291
10.5.5 ID属性类型... 292
10.5.6 IDREF属性类型... 292
10.5.7 ENTITY属性类型... 293
10.5.8 ENTITIES 属性类型... 294
10.5.9 NOTATION属性类型... 294
10.6 预定义属性... 296
10.6.1 xml:space. 296
10.6.2 xml:lang. 297
10.7 基于属性的棒球统计数据的DTD.. 300
10.7.1 在DTD中声明SEASON的属性... 302
10.7.2 在DTD中声明DIVISION和LEAGUE属性... 302
10.7.3 在DTD中声明TEAM属性... 302
10.7.4 在DTD中声明PLAYER的属性... 303
10.7.5 棒球比赛统计数据示例的完整DTD.. 306
10.8 本章小结... 309
第11章 嵌入非XML数据... 310
11.1 记号... 310
11.2 不可析外部实体... 314
11.2.1 声明不可析实体... 314
11.2.2 嵌入不可析实体... 314
11.2.3 嵌入多个不可析实体... 317
11.3 处理指令... 319
11.4 DTD的条件部分... 322
11.5 本章小结... 324
第三部分 样式语言... 325
第12章 级联样式单级别1. 325
12.1 什么是CSS?... 325
12.2 样式单与文档的链接... 327
12.3 选择元素... 331
12.3.1 成组选择符... 331
12.3.2 伪元素... 331
12.3.3 伪类(pseudo-classe) 332
12.3.4 由ID来选择... 335
12.3.5 上下文的选择符... 335
12.3.6 STYLE特性... 336
12.4 继承性... 337
12.5 级联过程... 339
12.5.1 @import指令... 339
12.5.2 !important声明... 339
12.5.3 级联顺序... 339
12.6 在CSS样式单中添加注释... 341
12.7 CSS中的单位... 342
12.7.1 长度值... 342
12.7.2 URL值... 344
12.7.3 颜色值... 345
12.7.4 关键字值... 346
12.8 块、内联或列表项元素... 347
12.8.1 列表项... 352
12.8.2 whitespace属性... 354
12.9 字体属性... 357
12.9.1 font-family属性... 357
12.9.2 font-style属性... 358
12.9.3 font-variant属性... 359
12.9.4 font-weight属性... 359
12.9.5 font-size属性... 360
12.9.6 font简略属性... 362
12.10 颜色属性... 364
12.11 背景属性... 365
12.11.1 background-color属性... 365
12.11.2 background-image属性... 365
12.11.3 background-repeat属性... 367
12.11.4 background-attachment属性... 368
12.11.5 background-position属性... 369
12.12 文本属性... 373
12.12.1 word-spacing属性... 373
12.12.2 letter-spacing属性... 374
12.12.3 text-decoration属性... 374
12.12.4 vertical-align属性... 375
12.12.5 text –transform属性... 376
12.12.6 text-align属性... 377
12.12.7 text-indent属性... 378
12.12.8 line-height属性... 378
12.13 框属性... 380
12.13.1 页边距属性... 380
12.13.2 边框线属性... 381
12.13.3 贴边属性... 384
12.13.4 大小属性... 385
12.13.5 定位属性... 386
12.13.6 float属性... 386
12.13.7 clear属性... 387
12.14 本章小结... 389
第13章 级联样式单级别2. 389
13.1 CSS2中有哪些新特点?... 389
13.1.1 新的伪类... 390
13.1.2 新的伪元素... 390
13.1.3 媒体类型... 390
13.1.4 分页媒体... 390
13.1.5 国际化... 390
13.1.6 可视格式化控制... 391
13.1.7 表格... 391
13.1.8 生成的内容... 391
13.1.9 有声样式单... 391
13.1.10 新工具... 391
13.2 选择元素... 393
13.2.1 式样匹配... 393
13.2.2 通配符... 394
13.2.3 后代和子代选择符... 394
13.2.4 直系同属选择符... 396
13.2.5 特性选择符... 396
13.2.6 @规则... 396
13.2.7 伪元素... 400
13.2.8 伪类... 401
13.3 格式化页面... 403
13.3.1 大小属性... 403
13.3.2 页边距属性... 403
13.3.3 标记属性... 403
13.3.4 页面属性... 403
13.3.5 分页符属性... 404
13.4 可视格式化... 405
13.4.1 显示属性... 405
13.4.2 宽度和高度属性... 407
13.4.3 overflow属性... 407
13.4.4 clip属性... 408
13.4.5 visibility属性... 408
13.4.6 cursor属性... 409
13.4.7 相关的颜色属性... 410
13.5 框... 412
13.5.1 轮廓属性... 412
13.5.2 定位属性... 413
13.6 计数器和自动编号... 417
13.7 有声样式单... 419
13.7.1 说话属性... 420
13.7.2 音量属性... 420
13.7.3 暂停属性... 420
13.7.4 提示属性... 421
13.7.5 同期播放属性... 421
13.7.6 空间属性... 421
13.7.7 音质属性... 422
13.7.8 话音属性... 424
13.8 本章小结... 425
第14章 XSL变换... 426
14.1 何为XSL?... 426
14.2 XSL变换概述... 428
14.2.1 树形结构... 428
14.2.2 XSL 样式单文档... 430
14.2.3 在何处进行XML变换... 431
14.2.4 如何使用XT. 432
14.2.5 直接显示带有XSL样式单的XML文件... 434
14.3 XSL模板... 436
14.3.1 xsl:apply-templates元素... 436
14.3.2 select特性... 438
14.4 使用xsl:value-of来计算节点值... 440
14.5 使用xsl:for-each处理多个元素... 442
14.6 匹配节点的模式... 444
14.6.1 匹配根节点... 444
14.6.2 匹配元素名... 445
14.6.3 使用/字符匹配子节点... 447
14.6.4 使用//符号匹配子代... 448
14.6.5 通过ID匹配... 449
14.6.6 使用@来匹配特性... 449
14.6.7 使用comments()来匹配注释... 451
14.6.8 使用pi()来匹配处理指令... 452
14.6.9 用text()来匹配文本节点... 452
14.6.10 使用“或”操作符| 453
14.7 选择节点的表达式... 454
14.7.1 节点轴... 454
14.7.2 表达式类型... 462
14.8 缺省的模板规则... 471
14.8.1 元素的缺省规则... 471
14.8.2 文本节点的缺省规则... 471
14.8.3 两个缺省规则的含义... 471
14.9 决定输出要包含的内容... 473
14.9.1 使用特性值模板... 473
14.9.2 使用xsl:element将元素插入到输出文档中... 475
14.9.3 使用xsl:attribute将特性插入到输出文档中... 476
14.9.4 定义特性集合... 477
14.9.5 使用xsl:pi生成处理指令... 478
14.9.6 使用xsl:comment生成注释... 478
14.9.7 使用xsl:text生成文本... 479
14.10 使用xsl:copy复制当前节点... 480
14.11 使用xsl:number为节点计数... 483
14.11.1 缺省数值... 484
14.11.2 数字到字符串的变换... 486
14.12 对输出元素排序... 488
14.13 CDATA和<符... 491
14.14 方式... 493
14.15 使用xsl:variable定义常数... 496
14.16 命名模板... 496
14.16.1 参数... 498
14.17 删除和保留空白... 501
14.18 选择... 503
14.18.1 xsl:if 503
14.18.2 xsl:choose. 503
14.19 合并多个样式单... 505
14.19.1 使用xsl:import进行录入... 505
14.19.2 使用xsl:include进行包括... 505
14.19.3 使用xsl:stylesheet在文档中嵌入样式单... 505
14.20 本章小结... 508
第15章 XSL格式化对象... 508
15.1 XSL格式化语言概述... 509
15.2 格式对象及其属性... 510
15.2.1 fo命名域... 511
15.2.2 格式化属性... 513
15.2.3 转换成格式化对象... 518
15.2.4 使用FOP. 520
15.3 页面布局... 522
15.3.1 主控页面... 522
15.3.2 页序列... 525
15.4 内容... 530
15.4.1 块级格式化对象... 530
15.4.2 内联格式化对象... 531
15.4.3 表格格式化对象... 532
15.4.4 外联格式化对象... 532
15.5 水平线... 533
15.6 图形... 534
15.7 链接... 535
15.8 列表... 536
15.9 表格... 538
15.10 字符... 542
15.11 序列... 543
15.12 脚注... 544
15.13 浮动... 544
15.14 XSL格式化属性... 546
15.14.1 单位和数据类型... 546
15.14.2 消息属性... 548
15.14.3 段落属性... 548
15.14.4 字符属性... 551
15.14.5 句子属性... 552
15.14.6 区域属性... 555
15.14.7 听觉属性... 560
15.15 本章小结... 562
第四部分 补充技术... 563
第16章 XLink. 563
16.1 XLink与HTML链接的对比... 563
16.2 简单链接... 565
16.2.1 本地资源的描述... 566
16.2.2 远程资源的描述... 567
16.2.3 链接行为... 568
16.3 扩展链接... 575
16.4 外联链接... 579
16.5 扩展链接组... 581
16.5.1 一个实例... 581
16.5.2 steps特性... 583
16.6 重命名XLink特性... 585
16.7 本章小结... 586
第18章 命名域... 588
18.1 何为命名域... 588
18.2 命名域句法... 591
18.2.1 命名域的定义... 591
18.2.2 多个命名域... 592
18.2.3 特性... 595
18.2.4 缺省的命名域... 596
18.3 DTD中的命名域... 600
18.4 本章小结... 601

8,906

社区成员

发帖
与我相关
我的任务
社区描述
XML/XSL相关问题讨论专区
社区管理员
  • XML/XSL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧