在 xslt 中解析包含 xml 字符串的变量
Parsing a variable containing xml string in xslt
我正在尝试使用 xslt 构建一个 html 模板,我需要在其中解析包含 xml 字符串的变量的值。但不能这样做。如果我尝试打印变量,它会显示整个 xml 字符串,其中 <
和 >
分别替换为 <
和 >
,但未被解析尝试时使用 xpath。
下面是我的 xml 字符串,我将其存储在名为 "SpecificOrderDetails" 的变量中。如果我尝试表达式
<xsl:value-of select="$SpecificOrderDetails/SPECIFICORDERDETAILS/text()"/>
它给我空值作为输出
<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"><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>
</td>
</tr>
请帮助某人了解如何解析 xslt 中的变量。让我知道我是否不够清楚。这是我在 Whosebug 上提出的第一个问题。
成功了!
使用了 xslt2.0 的 xmlns:saxon="http://saxon.sf.net/" 扩展,它完美地解析了 xml 中的字符串变量如下。
<xsl:value-of select="saxon:parse($SpecificOrderDetails)/SPECIFICORDERDETAILS/ORDERROW[ACTION ='0']"/>
感谢大家的帮助!
我正在尝试使用 xslt 构建一个 html 模板,我需要在其中解析包含 xml 字符串的变量的值。但不能这样做。如果我尝试打印变量,它会显示整个 xml 字符串,其中 <
和 >
分别替换为 <
和 >
,但未被解析尝试时使用 xpath。
下面是我的 xml 字符串,我将其存储在名为 "SpecificOrderDetails" 的变量中。如果我尝试表达式
<xsl:value-of select="$SpecificOrderDetails/SPECIFICORDERDETAILS/text()"/>
它给我空值作为输出
<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"><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>
</td>
</tr>
请帮助某人了解如何解析 xslt 中的变量。让我知道我是否不够清楚。这是我在 Whosebug 上提出的第一个问题。
成功了!
使用了 xslt2.0 的 xmlns:saxon="http://saxon.sf.net/" 扩展,它完美地解析了 xml 中的字符串变量如下。
<xsl:value-of select="saxon:parse($SpecificOrderDetails)/SPECIFICORDERDETAILS/ORDERROW[ACTION ='0']"/>
感谢大家的帮助!