我读了很多文章,尝试了很多事情,但仍然无法通过xsl在参数中找到值。我从java的sun
xalan开始,但是从来没有运行过,所以我改用saxon无济于事。我想将两个xml文档与xls合并为一个。永远不要在文件系统上,这是用于构建xml字符串/
docs的Web应用程序。我尝试将DTMAxisIterator,DomSource,Doc传递给以xsl,字符串设置的Node。在带有xsl
document()的NotePad ++中,它工作正常,但我不想将xml保存在系统上。
XSL
<xsl:param name="RsXml" select="/"/>
<xsl:template match="/policy/vehicles">
<vehicle type="DP" type_code="DP"/>
<xsl:for-each select="$RsXml/InsuranceSvcRs /com.csc_PolicyOrderCurrentCarrierInqRs/PersVeh">
<vin>
<xsl:value-of select="VehIdentificationNumber"/>
</vin>
<veh_year>
<xsl:value-of select="ModelYear"/>
</veh_year>
<make>
<xsl:value-of select="Manufacturer"/>
</make>
<model>
<xsl:value-of select="Model"/>
</model>
<costnew>
<xsl:value-of select="CostNewAmt/Amt"/>
</costnew>
<symbol>
<xsl:value-of select="VehSymbolCd"/>
</symbol>
<wheregaraged></wheregaraged>
<liabilityonly></liabilityonly>
<collision></collision>
<comprehensive></comprehensive>
<rentalreimbursement></rentalreimbursement>
<towing></towing>
<altered></altered>
<title></title>
<enginesize>
<xsl:value-of select="NumCylinders"/>
</enginesize>
<trailertype/>
<trtonnage/>
<mctype/>
<mcenginecc/>
<vehicleuse></vehicleuse>
<mhawnings></mhawnings>
<vseat15></vseat15>
<vseat15text/>
<extraequipment></extraequipment>
<mcsidecar></mcsidecar>
<atvwheels/>
<damage/>
<endorsements/>
<avtotal/>
<v_underwriting>
<altered></altered>
<alteredlist/>
<alteredexplain/>
<businessuse></businessuse>
<haulstudents></haulstudents>
<pulltrailers></pulltrailers>
<trailerendorsement/>
</v_underwriting>
<driverid></driverid>
<gen_classcode></gen_classcode>
<classcode></classcode>
<primary_veh></primary_veh>
<rates>
<bi></bi>
<pd></pd>
<med></med>
<ubi></ubi>
<upd></upd>
<comp></comp>
<coll></coll>
<comm></comm>
<rr></rr>
<tl></tl>
</rates>
<xferdis></xferdis>
<atv_young_dr></atv_young_dr>
<mrcd_date/>
<hasdamage></hasdamage>
<comp_symbol></comp_symbol>
<str_legal></str_legal>
<addresses/>
</xsl:for-each>
<xsl:apply-templates/>
XML一
<?xml version="1.0" encoding="UTF-8"?>
<policy id="1735">
<vehicles>
</vehicles>
</policy>
XML二
<ACORD>
<InsuranceSvcRs>
<com.csc_PolicyOrderCurrentCarrierInqRs>
<PersVeh id="001">
<ItemIdInfo>
<InsurerId>001</InsurerId>
</ItemIdInfo>
<Manufacturer>FORD</Manufacturer>
<Model>WINDSTAR</Model>
<ModelYear>1999</ModelYear>
<VehBodyTypeCd>ES</VehBodyTypeCd>
<CostNewAmt>
<Amt>23660</Amt>
</CostNewAmt>
<NumDaysDrivenPerWeek />
<EstimatedAnnualDistance>
<NumUnits />
<UnitMeasurementCd />
</EstimatedAnnualDistance>
<FullTermAmt>
<Amt />
</FullTermAmt>
<TerritoryCd />
<VehIdentificationNumber>1</VehIdentificationNumber>
<NumCylinders>6</NumCylinders>
<VehSymbolCd />
<AntiLockBrakeCd>4-WHEEL STD</AntiLockBrakeCd>
<DaytimeRunningLightInd />
<DistanceOneWay>
<NumUnits />
<UnitMeasurementCd>MI</UnitMeasurementCd>
</DistanceOneWay>
<AntiTheftDeviceCd>PASS-KEY</AntiTheftDeviceCd>
<VehPerformanceCd />
<VehUseCd />
<AirBagTypeCd>BOTH</AirBagTypeCd>
<com.csc_VehBodyTypeFreeformInd />
</PersVeh>
</com.csc_PolicyOrderCurrentCarrierInqRs>
</InsuranceSvcRs>
</ACORD>
类
public String transformResultXML(String xmlSource, Templates xsl,String policyXml ) {
String result = "";
try {
StringWriter writer = new StringWriter();
StringReader reader2 = new StringReader(policyXml);
XmlHelper xh = new XmlHelper();
Document xmlSrc = xh.loadDoc(xmlSource);
DOMSource source = new DOMSource(xmlSrc);
ByteArrayInputStream byteStream = new ByteArrayInputStream(xmlSource.getBytes());
StringReader reader = new StringReader(xmlSource);
SAXSource source2 = new SAXSource(new XMLFilterImpl(), new InputSource(reader));
TransformerFactory transFact = new com.icl.saxon.TransformerFactoryImpl();
Transformer transformer = transFact.newTransformer();
transformer.setParameter("RsXml",source2);
// transformer.setParameter("RsXml",xmlSrc);
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
transformer.transform(new javax.xml.transform.stream.StreamSource(reader2),
new javax.xml.transform.stream.StreamResult(writer));
result = writer.toString();
System.out.println(result);
} catch( Exception e ) {
e.printStackTrace();
}
return result;
}
我能够与Saxon一起使用,请参见下面的代码。我认为关键是document.getDocumentElement()作为parm
public String transformResultXML(String xmlSource, Templates xsl,String policyXml ) {
String result = "";
try {
StringWriter writer = new StringWriter();
StringReader reader2 = new StringReader(policyXml);
DocumentBuilderFactory dfactory =
DocumentBuilderFactory.newInstance( "com.icl.saxon.om.DocumentBuilderFactoryImpl",null);
dfactory.setNamespaceAware(true);
DocumentBuilder docBuilder = dfactory.newDocumentBuilder();
org.w3c.dom.Document document = docBuilder.parse(new InputSource(new StringReader(xmlSource)));
Transformer transformer = xsl.newTransformer();
transformer.setParameter("RsXml", document.getDocumentElement());
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
transformer.transform(new javax.xml.transform.stream.StreamSource(reader2),
new javax.xml.transform.stream.StreamResult(writer));
result = writer.toString();
System.out.println(result);
} catch( Exception e ) {
e.printStackTrace();
}
XSL代码段
<xsl:param name="RsXml" />
<xsl:template match="/policy/vehicles">
<xsl:for-each select="$RsXml/InsuranceSvcRs/com.csc_PolicyOrderCurrentCarrierInqRs/PersVeh">
问题内容: 我正在为XSL进行附加国际化。我已经看到了许多创建dictionary.xml文件并通过document(’dictionary.xml’)将其加载到XSL中的示例。我想做类似的事情,但是我不想在字典上创建和存储dictionary.xml文件,而是希望在服务器启动时通过SQL构建它,并将Document对象保留在Java内存中。然后,我想将字典文档作为参数传递给转换器,以便XSL转换
问题内容: 我已经熟悉Android框架和Java,并希望创建一个通用的“ NetworkHelper”类,该类可以处理大多数联网代码,使我能够从中调用网页。 我遵循了来自developer.android.com的这篇文章来创建我的网络类:http : //developer.android.com/training/basics/network- ops/connecting.html 码:
问题内容: 我正在创建一个分页类,需要将两个参数传递给我的LIMIT子句的MySQL存储过程。 我将它们作为INT传递给我,并尝试这样的事情 但是,当我尝试保存该存储过程时,它给了我一个错误。有什么方法可以让我错过吗?还是我必须评估整个查询并执行它? 问题答案: 在5.5.6之前的版本中,无法在MySQL存储过程中进行参数化。您需要动态构建查询并执行它。 在5.5.6及更高版本中,只要将存储的pr
问题内容: 我正在创建一种通过传递搜索字段从任何表中选择ID的方法。 但是我得到一个有关语法错误的MySqlException。当我查看“异常”消息时,它向我显示带引号的查询表!如何将表格作为不带引号的参数传递? 问题答案: 大多数数据库不允许您通过参数指定表名或列名。参数用于 值 。如果确实确实需要使它动态化,则应验证输入(它应该是一个已知的表名,并且该表中具有已知的列名),然后将其包括在SQL
问题内容: 我是cron工作的新手,不确定是否会奏效。 为了安全起见,我考虑过制作一个一页脚本,该脚本查找某些GET值(用户名,密码和安全代码),以确保只有计算机和知道这3种信息的人才能运行该命令。 我制作了脚本,并且可以在浏览器中运行该脚本,但是可以使用GET值运行cron作业吗? 一个例子就是我跑步 这可能吗? 问题答案: 仅当通过Web服务器调用脚本时,&关联数组才被初始化。通过命令行调用时
问题内容: 我正在使用Go内置的http服务器,并拍拍来响应一些URL: 我需要向该处理函数传递一个额外的参数-一个接口。 如何向处理程序函数发送额外的参数? 问题答案: 通过使用闭包,您应该能够做您想做的事情。 更改为以下内容(未测试): 然后对