-1

おはようございます。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"]/>""

どうもありがとう

4

2 に答える 2

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 属性は、共通の親の下ではなく、下にあり、提案していたものに最も近い解決策は次のとおりですquantityServicepriceService

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

しかし、これは、プロセッサがこの操作を実行するためにドキュメント全体を 2 回スキャンする必要があるため、上記で提案した 2 つのオプションよりもはるかに効率的ではありません。

于 2012-05-20T20:10:15.967 に答える
0

あなたの質問は明確ではありません
。明確でより良い回答を得るために、XML の例を提供してください。
DTD があるので、適切なデータがなくても正しい構造の一般的な XML サンプル ファイルを生成できます。

于 2012-05-20T18:42:11.727 に答える