Xml 创建变量xsl

Xml 创建变量xsl,xml,xslt,Xml,Xslt,早上好,如果有人知道它通过xsl和xml帮助创建变量的话 我有以下xml: <!ELEMENT bdticketCardell (invoice, services, products) > ........ <!ELEMENT services (service+)> <!ELEMENT service (nameService, quantityService, priceService)> <!ELEMENT nameService (#PCDAT

早上好,如果有人知道它通过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>

........
我想执行以下操作:variable name=“GrossPriceService 1”select=“//quantityService[@idService=“s1”]*///priceService[@idService=“s1”]/>


非常感谢

您的问题不清楚
请提供XML示例,以获得清晰、更好的答案。

由于您有DTD,您可以生成任何通用XML示例文件,而无需合理的数据,但结构正确。

您的问题不是很清楚,但我的猜测是,您希望将价格乘以@id等于“s1”的服务数量,并将结果放入一个变量中

如果是这样,你可以写:

<xsl:variable name="grosspriceservice1" 
  select="/services/service[@idService='s1']/quantityService * /services/service[@idService='s1']/priceService"/>
但这比我上面提出的两个选项效率要低得多,因为处理器必须扫描整个文档两次才能执行此操作

<xsl:variable name="grosspriceservice1" 
  select="id('s1')/quantityService * id('s1')/priceService"/>
<xsl:variable name="grosspriceservice1" 
  select="//quantityService[../@id='s1'] * //priceService[../@idService = "s1"]"/>