簡體   English   中英

解析 xslt 中包含 xml 字符串的變量

[英]Parsing a variable containing xml string in xslt

我正在嘗試使用 xslt 形成一個 html 模板,我需要從包含 xml 字符串的變量中解析值。 但不能這樣做。 如果我嘗試打印變量,它將顯示整個 xml 字符串,其中<>被替換為&lt; &gt; 分別,但在嘗試時沒有被 xpath 解析。

下面是我的 xml 字符串看起來像我存儲在一個名為“SpecificOrderDetails”的變量中。 如果我嘗試表達

<xsl:value-of select="$SpecificOrderDetails/SPECIFICORDERDETAILS/text()"/>

它給了我 null 值為 output

<SPECIFICORDERDETAILS><ORDERROW><CATEGORY>1</CATEGORY><ACTION>0</ACTION><COMPONENTNAME>Hard-wired Return Path</COMPONENTNAME><COMPONENTID>101401</COMPONENTID></ORDERROW><ORDERROW><CATEGORY>1</CATEGORY><ACTION>0</ACTION><COMPONENTNAME>Platinum Included FBO Movies</COMPONENTNAME><COMPONENTID>101500</COMPONENTID></ORDERROW><ORDERROW><CATEGORY>1</CATEGORY><ACTION>0</ACTION><COMPONENTNAME>iQ Discount</COMPONENTNAME><COMPONENTID>101501</COMPONENTID></ORDERROW><ORDERROW><CATEGORY>1</CATEGORY><ACTION>0</ACTION><COMPONENTNAME>Primary Discounts</COMPONENTNAME><COMPONENTID>101504</COMPONENTID></ORDERROW><ORDERROW><CATEGORY>1</CATEGORY><ACTION>0</ACTION><COMPONENTNAME>03 Foxtel iQ</COMPONENTNAME><COMPONENTID>101601</COMPONENTID></ORDERROW><ORDERROW><CATEGORY>1</CATEGORY><ACTION>0</ACTION><COMPONENTNAME>TV - 24 Month Contract</COMPONENTNAME><COMPONENTID>101714</COMPONENTID></ORDERROW><ORDERROW><CATEGORY>1</CATEGORY><ACTION>0</ACTION><COMPONENTNAME>Standard Install - No Offer</COMPONENTNAME><COMPONENTID>101723</COMPONENTID></ORDERROW><ORDERROW><CATEGORY>1</CATEGORY><ACTION>0</ACTION><COMPONENTNAME>My Platinum Eligibility</COMPONENTNAME><COMPONENTID>101900</COMPONENTID></ORDERROW><ORDERROW><CATEGORY>1</CATEGORY><ACTION>0</ACTION><COMPONENTNAME>Commitment Eligibility</COMPONENTNAME><COMPONENTID>101913</COMPONENTID></ORDERROW><ORDERROW><CATEGORY>1</CATEGORY><ACTION>0</ACTION><COMPONENTNAME>Platinum Channels</COMPONENTNAME><COMPONENTID>990015</COMPONENTID></ORDERROW><ORDERROW><CATEGORY>4</CATEGORY><ACTION>0</ACTION><COMPONENTNAME>Smartcard</COMPONENTNAME><COMPONENTID>101</COMPONENTID></ORDERROW><ORDERROW><CATEGORY>4</CATEGORY><ACTION>0</ACTION><COMPONENTNAME>iQ PDR - Satellite</COMPONENTNAME><COMPONENTID>201</COMPONENTID></ORDERROW></SPECIFICORDERDETAILS>

如果我嘗試打印變量,它會顯示整個 xml 字符串,如下所示

<tr>
   <td class="headingSubText" style="font-size:13pt; padding:10px 0px 0px 15px">&lt;SPECIFICORDERDETAILS&gt;&lt;ORDERROW&gt;&lt;CATEGORY&gt;1&lt;/CATEGORY&gt;&lt;ACTION&gt;0&lt;/ACTION&gt;&lt;COMPONENTNAME&gt;Hard-wired Return Path&lt;/COMPONENTNAME&gt;&lt;COMPONENTID&gt;101401&lt;/COMPONENTID&gt;&lt;/ORDERROW&gt;&lt;ORDERROW&gt;&lt;CATEGORY&gt;1&lt;/CATEGORY&gt;&lt;ACTION&gt;0&lt;/ACTION&gt;&lt;COMPONENTNAME&gt;Platinum
      Included FBO Movies&lt;/COMPONENTNAME&gt;&lt;COMPONENTID&gt;101500&lt;/COMPONENTID&gt;&lt;/ORDERROW&gt;&lt;ORDERROW&gt;&lt;CATEGORY&gt;1&lt;/CATEGORY&gt;&lt;ACTION&gt;0&lt;/ACTION&gt;&lt;COMPONENTNAME&gt;iQ
      Discount&lt;/COMPONENTNAME&gt;&lt;COMPONENTID&gt;101501&lt;/COMPONENTID&gt;&lt;/ORDERROW&gt;&lt;ORDERROW&gt;&lt;CATEGORY&gt;1&lt;/CATEGORY&gt;&lt;ACTION&gt;0&lt;/ACTION&gt;&lt;COMPONENTNAME&gt;Primary
      Discounts&lt;/COMPONENTNAME&gt;&lt;COMPONENTID&gt;101504&lt;/COMPONENTID&gt;&lt;/ORDERROW&gt;&lt;ORDERROW&gt;&lt;CATEGORY&gt;1&lt;/CATEGORY&gt;&lt;ACTION&gt;0&lt;/ACTION&gt;&lt;COMPONENTNAME&gt;03
      Foxtel iQ&lt;/COMPONENTNAME&gt;&lt;COMPONENTID&gt;101601&lt;/COMPONENTID&gt;&lt;/ORDERROW&gt;&lt;ORDERROW&gt;&lt;CATEGORY&gt;1&lt;/CATEGORY&gt;&lt;ACTION&gt;0&lt;/ACTION&gt;&lt;COMPONENTNAME&gt;TV
      - 24 Month Contract&lt;/COMPONENTNAME&gt;&lt;COMPONENTID&gt;101714&lt;/COMPONENTID&gt;&lt;/ORDERROW&gt;&lt;ORDERROW&gt;&lt;CATEGORY&gt;1&lt;/CATEGORY&gt;&lt;ACTION&gt;0&lt;/ACTION&gt;&lt;COMPONENTNAME&gt;Standard
      Install - No Offer&lt;/COMPONENTNAME&gt;&lt;COMPONENTID&gt;101723&lt;/COMPONENTID&gt;&lt;/ORDERROW&gt;&lt;ORDERROW&gt;&lt;CATEGORY&gt;1&lt;/CATEGORY&gt;&lt;ACTION&gt;0&lt;/ACTION&gt;&lt;COMPONENTNAME&gt;My
      Platinum Eligibility&lt;/COMPONENTNAME&gt;&lt;COMPONENTID&gt;101900&lt;/COMPONENTID&gt;&lt;/ORDERROW&gt;&lt;ORDERROW&gt;&lt;CATEGORY&gt;1&lt;/CATEGORY&gt;&lt;ACTION&gt;0&lt;/ACTION&gt;&lt;COMPONENTNAME&gt;Commitment
      Eligibility&lt;/COMPONENTNAME&gt;&lt;COMPONENTID&gt;101913&lt;/COMPONENTID&gt;&lt;/ORDERROW&gt;&lt;ORDERROW&gt;&lt;CATEGORY&gt;1&lt;/CATEGORY&gt;&lt;ACTION&gt;0&lt;/ACTION&gt;&lt;COMPONENTNAME&gt;Platinum
      Channels&lt;/COMPONENTNAME&gt;&lt;COMPONENTID&gt;990015&lt;/COMPONENTID&gt;&lt;/ORDERROW&gt;&lt;ORDERROW&gt;&lt;CATEGORY&gt;4&lt;/CATEGORY&gt;&lt;ACTION&gt;0&lt;/ACTION&gt;&lt;COMPONENTNAME&gt;Smartcard&lt;/COMPONENTNAME&gt;&lt;COMPONENTID&gt;101&lt;/COMPONENTID&gt;&lt;/ORDERROW&gt;&lt;ORDERROW&gt;&lt;CATEGORY&gt;4&lt;/CATEGORY&gt;&lt;ACTION&gt;0&lt;/ACTION&gt;&lt;COMPONENTNAME&gt;iQ
      PDR - Satellite&lt;/COMPONENTNAME&gt;&lt;COMPONENTID&gt;201&lt;/COMPONENTID&gt;&lt;/ORDERROW&gt;&lt;/SPECIFICORDERDETAILS&gt;
   </td>
</tr>

請幫助某人如何解析 xslt 中的變量。 如果我不夠清楚,請告訴我。 這是我在 stackoverflow 上提出的第一個問題。

得到它的工作!

使用 xslt2.0 的xmlns:saxon="http://saxon.sf.net/"擴展名,它可以完美地解析變量中的 xml 字符串,如下所示。

<xsl:value-of select="saxon:parse($SpecificOrderDetails)/SPECIFICORDERDETAILS/ORDERROW[ACTION ='0']"/>

感謝大家的幫助!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM