xsl中 如何用相对路径获取其他xsl文件

cwx1010 2013-03-22 11:56:00
现在所有的xsl文件都在同一个文件夹下,但是在某个xsl文件引用其他所有xsl文件时,用方式xsl:import href="XXX.xsl" 会报错:在服务调用时会报找不到该XXX.xsl。为什么呢
...全文
792 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
cwx1010 2013-09-02
  • 打赏
  • 举报
回复
引用 13 楼 mbz007 的回复:
[quote=引用 11 楼 jswatcher 的回复:] [quote=引用 10 楼 cwx1010 的回复:] @jswatcher,thanks 按照你的方案解决问题了
Great! 不用谢! Let's help each others! [/quote] 可以告诉我一下怎么改吗?[/quote] ---------------------------------------------------------------------- @mbz007 部分代码如下:其中变量xmlContent为返回的要解析的xml报文。 StrDocument stringDocument = new StrDocument(); Document xmlDocument = stringDocument.stringToDoc(xmlContent); TransformerFactory tFactory = TransformerFactory.newInstance(); //make the input sources for the xml and xslt documents org.jdom.output.DOMOutputter outputter = new org.jdom.output.DOMOutputter(); //org.w3c.dom.Document与org.jdom.document的互转 org.w3c.dom.Document domDocument = outputter.output((org.jdom.Document) xmlDocument); javax.xml.transform.Source xmlSource = new javax.xml.transform.dom.DOMSource(domDocument); String personPath = getServletContext().getRealPath("/xmlXsl/person.xsl"); StreamSource xmltSource = new StreamSource(new FileInputStream(personPath)); /* * 保证联合样式表中的其他xsl文件也能读取得到 或者xmltSource.setSystemId(personPath.toURL().toString()); */ xmltSource.setSystemId(personPath); //make the output result for the finished document using the httpResponse OutputStream StreamResult xmlResult = new StreamResult(response.getOutputStream()); //get a xslt transformer Transformer transformer = tFactory.newTransformer(xmltSource); //do the transform transformer.transform(xmlSource,xmlResult);
mbz007 2013-08-24
  • 打赏
  • 举报
回复
引用 11 楼 jswatcher 的回复:
[quote=引用 10 楼 cwx1010 的回复:] @jswatcher,thanks 按照你的方案解决问题了
Great! 不用谢! Let's help each others! [/quote] 可以告诉我一下怎么改吗?
mbz007 2013-08-24
  • 打赏
  • 举报
回复
请问这个setSystemId 函数 怎么用啊?我也出这问题了 但是不知道怎么改啊~
cwx1010 2013-03-28
  • 打赏
  • 举报
回复
@jswatcher,thanks 按照你的方案解决问题了
jswatcher 2013-03-28
  • 打赏
  • 举报
回复
引用 10 楼 cwx1010 的回复:
@jswatcher,thanks 按照你的方案解决问题了
Great! 不用谢! Let's help each others!
cwx1010 2013-03-26
  • 打赏
  • 举报
回复
服务器的log报错如下: /home/loanapp/bea/user_projects/domains/base_domain/servers/PBCFRONT/tmp/_WL_user/PBCFRONT/dz8hwe/war/xmlXsl/entprs.xsl SystemId Unknown; Line #4; Column #36; Had IO Exception with stylesheet file: ENTERPRISE.xsl SystemId Unknown; Line #5; Column #45; Had IO Exception with stylesheet file: CAPTIAL_DEBT_EQUITY.xsl SystemId Unknown; Line #6; Column #30; Had IO Exception with stylesheet file: XDXX.xsl SystemId Unknown; Line #7; Column #41; Had IO Exception with stylesheet file: PAIDBACKSUMMARY.xsl SystemId Unknown; Line #8; Column #48; Had IO Exception with stylesheet file: CREDITAGREEMENTSUMMARY.xsl SystemId Unknown; Line #9; Column #47; Had IO Exception with stylesheet file: ASSETSTRIPPONGSUMMARY.xsl SystemId Unknown; Line #10; Column #42; Had IO Exception with stylesheet file: CHARGEOFFSUMMARY.xsl SystemId Unknown; Line #11; Column #30; Had IO Exception with stylesheet file: AABB.xsl SystemId Unknown; Line #12; Column #31; Had IO Exception with stylesheet file: GROUP.xsl SystemId Unknown; Line #13; Column #31; Had IO Exception with stylesheet file: STOCK.xsl SystemId Unknown; Line #14; Column #30; Had IO Exception with stylesheet file: SUIT.xsl SystemId Unknown; Line #15; Column #34; Had IO Exception with stylesheet file: INCIDENT.xsl SystemId Unknown; Line #16; Column #41; Had IO Exception with stylesheet file: SOCIALINSURANCE.xsl SystemId Unknown; Line #17; Column #44; Had IO Exception with stylesheet file: NONSOCIALINSURANCE.xsl SystemId Unknown; Line #18; Column #42; Had IO Exception with stylesheet file: ACCUMULATIONFUND.xsl SystemId Unknown; Line #19; Column #33; Had IO Exception with stylesheet file: LAWSUIT.xsl SystemId Unknown; Line #20; Column #36; Had IO Exception with stylesheet file: LAWENFORCE.xsl SystemId Unknown; Line #21; Column #35; Had IO Exception with stylesheet file: PAYCREDIT.xsl SystemId Unknown; Line #22; Column #41; Had IO Exception with stylesheet file: CSRCADMINPUNISH.xsl SystemId Unknown; Line #23; Column #41; Had IO Exception with stylesheet file: CSRCCONTINGENCY.xsl SystemId Unknown; Line #24; Column #43; Had IO Exception with stylesheet file: TAXPAYMENTSUMMARY.xsl SystemId Unknown; Line #25; Column #40; Had IO Exception with stylesheet file: TAXPAYMENTLIST.xsl SystemId Unknown; Line #26; Column #35; Had IO Exception with stylesheet file: TAXPUNISH.xsl SystemId Unknown; Line #27; Column #32; Had IO Exception with stylesheet file: REWARD.xsl SystemId Unknown; Line #28; Column #37; Had IO Exception with stylesheet file: ADMINPUNISH.xsl SystemId Unknown; Line #29; Column #36; Had IO Exception with stylesheet file: PERMISSION.xsl SystemId Unknown; Line #30; Column #33; Had IO Exception with stylesheet file: QUALITY.xsl SystemId Unknown; Line #31; Column #39; Had IO Exception with stylesheet file: CERTIFICATION.xsl SystemId Unknown; Line #32; Column #32; Had IO Exception with stylesheet file: AQSIQ1.xsl SystemId Unknown; Line #33; Column #32; Had IO Exception with stylesheet file: AQSIQ2.xsl SystemId Unknown; Line #34; Column #32; Had IO Exception with stylesheet file: AQSIQ3.xsl SystemId Unknown; Line #35; Column #39; Had IO Exception with stylesheet file: PUBLICTELECOM.xsl SystemId Unknown; Line #36; Column #40; Had IO Exception with stylesheet file: PUBLICELECTRIC.xsl SystemId Unknown; Line #37; Column #37; Had IO Exception with stylesheet file: PUBLICWATER.xsl SystemId Unknown; Line #38; Column #35; Had IO Exception with stylesheet file: PUBLICGAS.xsl SystemId Unknown; Line #39; Column #39; Had IO Exception with stylesheet file: PUBLICCABLETV.xsl SystemId Unknown; Line #40; Column #37; Had IO Exception with stylesheet file: PUBLICOTHER.xsl SystemId Unknown; Line #41; Column #35; Had IO Exception with stylesheet file: STATEMENT.xsl SystemId Unknown; Line #42; Column #33; Had IO Exception with stylesheet file: DISSENT.xsl SystemId Unknown; Line #43; Column #36; Had IO Exception with stylesheet file: REPORTDESC.xsl SystemId Unknown; Line #45; Column #39; Had IO Exception with stylesheet file: MESENTERPRISE.xsl SystemId Unknown; Line #46; Column #42; Had IO Exception with stylesheet file: MESMAINFINANCIAL.xsl SystemId Unknown; Line #47; Column #41; Had IO Exception with stylesheet file: MESOPERATEADDED.xsl SystemId Unknown; Line #48; Column #34; Had IO Exception with stylesheet file: MESOTHER.xsl SystemId Unknown; Line #133; Column #48; javax.xml.transform.TransformerException: ElemTemplateElement error: ENTERPRISE SystemId Unknown; Line #133; Column #48; javax.xml.transform.TransformerException: ElemTemplateElement error: ENTERPRISE 页面报错如下: Spring 自带的处理 javax.xml.transform.TransformerConfigurationException: javax.xml.transform.TransformerException: ElemTemplateElement error: ENTERPRISE
cwx1010 2013-03-26
  • 打赏
  • 举报
回复
这和weblogic自带的jar包有关系吗?中间件用的是weblogic,xalan.jar不用包含在lib里。
jswatcher 2013-03-26
  • 打赏
  • 举报
回复
引用 5 楼 cwx1010 的回复:
以下是ENTERPRISE.xsl的代码,请各位xdjm阅览。到底错在哪了 <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2……
entprs.xsl和ENTERPRISE.xsl放在同一个目录下时,validation is ok! 看不出问题! 你的服务器给出的具体报错信息是什么? 服务器用的 xslt 环境是xalan 吗?
jswatcher 2013-03-26
  • 打赏
  • 举报
回复
引用 8 楼 cwx1010 的回复:
服务器的log报错如下: /home/loanapp/bea/user_projects/domains/base_domain/servers/PBCFRONT/tmp/_WL_user/PBCFRONT/dz8hwe/war/xmlXsl/entprs.xsl SystemId Unknown; Line #4; Column #36; Had IO Except……
"SystemId Unknown; Line #4; Column #36; Had IO Except..." 这个错误很可能是,你没有设定 systemId 在 Transform 之前,一定要对 entprs.xsl source 用 setSystemId 函数 去设定 entprs.xsl 的路径
cwx1010 2013-03-25
  • 打赏
  • 举报
回复
以下是ENTERPRISE.xsl的代码,请各位xdjm阅览。到底错在哪了 <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:fn="http://www.w3.org/2005/xpath-functions" > <xsl:output method="xml" version="1.0" encoding="gbk" indent="yes"/> <xsl:template name="ENTERPRISE"> <table align="center" border="0" cellspacing="0" width="90%"> <tr> <td align="center" bgcolor="#FFFFFF"> <strong> <font size="+1">基本状况</font> </strong> </td> </tr> <tr height="1px"> <td> <hr size="1"></hr> </td> </tr> <tr bgcolor="#FFFFFF"> <td colspan="1"> <br> <b> <font size="3"> <strong>概况信息(详细版)</strong> </font> </b> </br> </td> </tr> <xsl:choose> <xsl:when test="ENTERPRISE/ENTERPRISE0007"> <xsl:for-each select="ENTERPRISE"> <table align="center" class="datagrid"> <tr> <td width="25%">外文名称</td> <td width="75%"> <xsl:value-of select="ENTERPRISE0002"></xsl:value-of> </td> </tr> <tr> <td width="25%">登记注册号</td> <td width="75%"> <xsl:value-of select="ENTERPRISE0003"></xsl:value-of> </td> </tr> <tr> <td width="25%">组织机构代码</td> <td width="75%"> <xsl:value-of select="ENTERPRISE0004"></xsl:value-of> </td> </tr> <tr> <td width="25%">国税登记证号码</td> <td width="75%"> <xsl:value-of select="ENTERPRISE0005"></xsl:value-of> </td> </tr> <tr> <td width="25%">地税登记证号码</td> <td width="75%"> <xsl:value-of select="ENTERPRISE0006"></xsl:value-of> </td> </tr> <tr> <td width="25%">工商注册登记日期</td> <td width="75%"> <xsl:value-of select="ENTERPRISE0008"></xsl:value-of> </td> </tr> <tr> <td width="25%">工商注册到期日期</td> <td width="75%"> <xsl:value-of select="ENTERPRISE0009"></xsl:value-of> </td> </tr> <tr> <td width="25%">所属行业</td> <td width="75%"> <xsl:value-of select="substring-after(ENTERPRISE0010,'|')"></xsl:value-of> </td> </tr> </table> </xsl:for-each> </xsl:when> <xsl:otherwise> <table align="center" class="datagrid" width="90%"> <tr> <td align="center"> <b> <font color="red">概况信息没有数据!</font> </b> </td> </tr> </table> </xsl:otherwise> </xsl:choose> </table> </xsl:template> </xsl:stylesheet>
jswatcher 2013-03-25
  • 打赏
  • 举报
回复
引用 3 楼 cwx1010 的回复:
请各位帮忙,以下是代码,entprs.xsl和ENTERPRISE.xsl是放在同一个目录下,并且entprs.xsl会调用ENTERPRISE.xsl。执行代码时会报找不到编译表ENTERPRISE.xsl <?xml version="1.0" encoding="UTF-8"?> ……
这个entprs.xsl应该没问题。也许问题出在ENTERPRISE.xsl里。 可以的话,把ENTERPRISE.xsl贴出来看看。
cwx1010 2013-03-24
  • 打赏
  • 举报
回复
请各位帮忙,以下是代码,entprs.xsl和ENTERPRISE.xsl是放在同一个目录下,并且entprs.xsl会调用ENTERPRISE.xsl。执行代码时会报找不到编译表ENTERPRISE.xsl <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:fn="http://www.w3.org/2005/xpath-functions"> <xsl:import href="ENTERPRISE.xsl"></xsl:import> <xsl:output method="xml" version="1.0" encoding="gbk" indent="yes"/> <xsl:template match="MSG"> <html> <head> <style type="text/css"> body{ margin: 6px; padding: 0; font-size: 12px; font-family: tahoma, arial; background: #fff; } table{ width: 90%; } tr.odd{ background: #fff; } tr.even{ background: #eee; } div.datagrid_div{ width: 90%; border: 1px solid #999; } table.datagrid{ border-collapse: collapse; } table.datagrid th{ text-align: center; background: #9cf; padding: 3px; border: 1px #333 solid; } table.datagrid td{ padding: 3px; border: none; border:1px #333 solid; } tr:hover, tr.hover{ background: #9cf; } </style> </head> <body> <xsl:comment>首先取得客户查询是否成功的标志位</xsl:comment> <xsl:choose> <xsl:when test="contains(SingleQueryResultMessage0102/ResultCode,'90000')"> <xsl:choose> <xsl:when test="contains(SingleQueryResultMessage0102/ReportMessage/REPORTTYPE/REPORTTYPE0001,'0')"> <table align="center" width="90%" border="0" cellspacing="0" cellpadding="0" bgcolor="#FFFFFF"> <tr> <td align="center"> <font size="+2"> <strong>企业信息报告</strong> </font> </td> </tr> <tr> <td align="center"> <strong> <font size="+1"> <xsl:value-of select="concat('报告时间:',SingleQueryResultMessage0102/ReportMessage/REPORTTYPE/REPORTTYPE0002)"></xsl:value-of> </font> </strong> </td> </tr> <tr height="1px"> <td> <hr size="1" color="black"></hr> </td> </tr> </table> <xsl:for-each select="SingleQueryResultMessage0102"> <xsl:for-each select="ReportMessage"> <xsl:call-template name="ENTERPRISE"></xsl:call-template> <xsl:comment>基本状况节点结束</xsl:comment> </xsl:for-each> <xsl:comment>ReportMessage节点结束</xsl:comment> </xsl:for-each> <xsl:comment>SingleQueryResultMessage0102节点结束</xsl:comment> <table align="center" width="620" cellspacing="0" cellpadding="0"> <tr align="center"> <td align="center"> <input type="button" id="save" name="save" value="另存为" class="button"> <xsl:attribute name="onclick"> document.execCommand("SaveAs",false,'c:\\.html') </xsl:attribute> </input> </td> </tr> </table> </xsl:when> <xsl:otherwise> </xsl:otherwise> </xsl:choose> </xsl:when> <xsl:otherwise> <table align="center" width="90%" border="0" cellspacing="0" cellpadding="0"> <tr> <td align="center" height="50"> <font color="#0066cc" size="4"> <xsl:value-of select="MsgReturn9105/Information"></xsl:value-of> </font> </td> </tr> </table> </xsl:otherwise> </xsl:choose> </body> </html> </xsl:template> </xsl:stylesheet>
jswatcher 2013-03-23
  • 打赏
  • 举报
回复
把你的整个 xsl 贴出来吧,也许是在import这行之前出了错。
cwx1010 2013-03-22
  • 打赏
  • 举报
回复
请各位大家帮忙一下。实在是没办法了。路径又不能写死

8,906

社区成员

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

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