XSLT不是重复标记或选择第一个标记
我在处理具有递归标记(相同的标记在标记中重复)的XML时遇到两个问题 问题#1“标题:”部分输出所有标题标记的文本内容,就好像它是从/而不是从调用它的路径进行搜索一样 问题#2@id测试没有发现任何东西,这可能是同一问题的症状 以下是XSL:XSLT不是重复标记或选择第一个标记,xslt,cognos,Xslt,Cognos,我在处理具有递归标记(相同的标记在标记中重复)的XML时遇到两个问题 问题#1“标题:”部分输出所有标题标记的文本内容,就好像它是从/而不是从调用它的路径进行搜索一样 问题#2@id测试没有发现任何东西,这可能是同一问题的症状 以下是XSL: <?xml version="1.0"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:cog="http://developer.cogn
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:cog="http://developer.cognos.com/schemas/xmldata/1/" xmlns:xs="http://www.w3.org/2001/XMLSchema-instance">
<xsl:template match="/">
<xsl:template match="cog:rows">
<xsl:apply-templates select="cog:rowEdge"/>
</xsl:template>
<xsl:template match="cog:rowEdge">
<p><b>Caption:</b> <xsl:value-of select="cog:caption"/></p>
<xsl:if test="@id">
<b>id:</b> <xsl:value-of select="@id"/><br/>
</xsl:if>
<xsl:if test="cog:rowEdge">
<p>Looking at next rowEdge</p>
<xsl:apply-templates select="cog:rowEdge"/>
</xsl:if>
</xsl:template>
<html>
<head><title>%s</title></head>
<body>
<xsl:apply-templates select="cog:dataset/cog:crosstab/cog:rows"/>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
标题:
id:
看下一排
%
以下是XML:
<?xml version="1.0" encoding="utf-8" ?>
<dataset xmlns="http://developer.cognos.com/schemas/xmldata/1/" xmlns:xs="http://www.w3.org/2001/XMLSchema-instance">
<crosstab>
<values>
<value row="R1" col="C1" xs:nil="true" />
<value row="R1" col="C2" xs:nil="true" />
<value row="R1" col="C3" xs:nil="true" />
<value row="R1" col="C4" xs:nil="true" />
<value row="R1" col="C5" xs:nil="true" />
<value row="R1" col="C6" xs:nil="true" />
<value row="R1" col="C7" xs:nil="true" />
<value row="R1" col="C8" xs:nil="true" />
<value row="R1" col="C9" xs:nil="true" />
<value row="R2" col="C1">0</value>
<value row="R2" col="C2">12.61728395</value>
<value row="R2" col="C3">1320.40677966</value>
<value row="R2" col="C4">7</value>
<value row="R2" col="C5">1.90318499</value>
<value row="R2" col="C6">108.66456135</value>
<value row="R2" col="C7">776.61407946</value>
<value row="R2" col="C8">-0.86007907</value>
<value row="R2" col="C9">46.53571429</value>
</values>
<corner>
<caption>Time Period: DCG Incurred Paid Year</caption>
</corner>
<columns>
<colEdge>
<caption>Jan 02 to Dec 02 {All Data} CRxIp</caption>
<colEdge>
<caption>2002</caption>
<colEdge id="C1">
<caption>Member Age Avg</caption>
</colEdge>
<colEdge id="C2">
<caption>Days Supply Per Script Rx</caption>
</colEdge>
<colEdge id="C3">
<caption>Net Pay Per Pat Med</caption>
</colEdge>
<colEdge id="C4">
<caption>Days LOS Admit Acute</caption>
</colEdge>
<colEdge id="C5">
<caption>Days LOS Admit Acute</caption>
</colEdge>
<colEdge id="C6">
<caption>Allow Amt PMPM Med and Rx {Cmpl}</caption>
</colEdge>
<colEdge id="C7">
<caption>Allow Amt PMPM Med and Rx {Cmpl}</caption>
</colEdge>
<colEdge id="C8">
<caption>% Diff Allow Amt PMPM Med and Rx {Cmpl}</caption>
</colEdge>
<colEdge id="C9">
<caption>Relative Risk Score Prosp Explan NonRescaled</caption>
</colEdge>
</colEdge>
</colEdge>
</columns>
<rows>
<rowEdge>
<caption>Subsets</caption>
<rowEdge>
<caption>Plan Type Medstat</caption>
<rowEdge id="R1">
<caption>Cohort Medstat</caption>
</rowEdge>
</rowEdge>
</rowEdge>
<rowEdge>
<caption>Chronic Episodes</caption>
<rowEdge>
<caption>HMO (Managed Care)</caption>
<rowEdge id="R2">
<caption>Females, Ages < 1</caption>
</rowEdge>
</rowEdge>
</rowEdge>
</rows>
</crosstab>
</dataset>
0
12.61728395
1320.40677966
7.
1.90318499
108.66456135
776.61407946
-0.86007907
46.53571429
时间段:DCG已发生支付年度
2002年1月至12月{所有数据}CRxIp
2002
会员平均年龄
每个脚本接收的供应天数
每名员工的净薪酬
急性发作的天数
急性发作的天数
允许Amt PMPM Med和Rx{Cmpl}
允许Amt PMPM Med和Rx{Cmpl}
%差异允许金额PMPM Med和Rx{Cmpl}
相对风险评分Prosp Explan非标度
子集
计划类型Medstat
队列医疗统计
慢性发作
HMO(管理式护理)
女性,1岁
您的样式表无效,因为文档节点的模板包装了所有其他模板。模板是XSLT中的顶级元素,不能嵌套。如果将它们分开,样式表应按预期工作:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:cog="http://developer.cognos.com/schemas/xmldata/1/"
xmlns:xs="http://www.w3.org/2001/XMLSchema-instance">
<xsl:template match="/">
<html>
<head><title>%s</title></head>
<body>
<xsl:apply-templates select="cog:dataset/cog:crosstab/cog:rows"/>
</body>
</html>
</xsl:template>
<xsl:template match="cog:rows">
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="cog:rowEdge">
<p><b>Caption:</b> <xsl:value-of select="cog:caption"/></p>
<xsl:if test="@id">
<b>id:</b> <xsl:value-of select="@id"/><br/>
</xsl:if>
<xsl:if test="cog:rowEdge">
<p>Looking at next rowEdge</p>
<xsl:apply-templates select="cog:rowEdge"/>
</xsl:if>
</xsl:template>
</xsl:stylesheet>
%
标题:
id:
看下一排
在这种情况下,是否可以发布您的预期输出?此外,您的XSLT示例无效,并且嵌套在另一个
中,这是不允许的。