早上好,如果有人知道它有助于通过xsl和xml创建变量
我有这个xml:
<!ELEMENT bdticketCardell (invoice, services, products) >
........
<!ELEMENT services (service+)>
<!ELEMENT service (nameService, quantityService, priceService)>
<!ELEMENT nameService (#PCDATA) >
<!ELEMENT quantityService (#PCDATA) >
<!ELEMENT priceService (#PCDATA) >
<!ATTLIST service idService ID #REQUIRED>
我想做=“”变量名=“grosspriceservice1”select =“// quantityService [@idService =”s1“] * // priceService [@idService =”s1“] /&gt;”“
非常感谢
答案 0 :(得分:0)
你的问题不明确
请提供XML示例以获得清晰且更好的答案。
当您拥有DTD时,您可以生成任何通用XML样本文件,而无需合理的数据但结构正确。
答案 1 :(得分:0)
您的问题不是很清楚,但我的猜测是您希望将价格乘以@id等于“s1”的服务数量,并将该结果放入变量中。
如果是这样,你可以写:
<xsl:variable name="grosspriceservice1"
select="/services/service[@idService='s1']/quantityService * /services/service[@idService='s1']/priceService"/>
或者,如果您的解析器处理DTD ID(在大多数情况下应该为真):
<xsl:variable name="grosspriceservice1"
select="id('s1')/quantityService * id('s1')/priceService"/>
(当然,您也可以使用变量来存储id为s1的服务)
@id属性不在quantityService
或priceService
下,而是在他们的共同父母之下,并且是您提出的最接近的解决方案:
<xsl:variable name="grosspriceservice1"
select="//quantityService[../@id='s1'] * //priceService[../@idService = "s1"]"/>
但这比我上面提到的两个选项效率低得多,因为处理器必须扫描整个文档两次以执行此操作。