这是我的XML示例:
<Products>
<Product Code="801027343416" Gtin="3432123" Title="N-D something"
SubTitle="N-D something" Category="PETSHOP > Dog" Brand="N&D" Cost="464.45"
Price="538.00" Stock="2" Vat="18">
<Definition>
<div><span style=\"font-weight: bold;\">N&D NATURAL DELICIOUS CHICKEN
& POMEGRANATE LARGE PUPPY</span></div> <div><span style=\"font-weight:
bold;\">somethingsomethingsomethingsomethingsomethingsomething
KG.</span></div> <div><br /> </div> <div>x</div> <div>Natural &
Delicious etoburların
xx xxx</div> <div>6. Txxenter code here....</div>
</Definition>
<Image Image1="http://www.asd.com/img/products/8010276020116_td_2.jpg"
Image2="http://www.asd.com/img/products/8010276020116_td_2.jpg"
Image3="http://www.asd.com/img/products/8010276020116_td_2_2.jpg"/>
</Product>
.....
还有我的xslt:
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:output method="xml" indent="yes"/>
xsl:template match="/" >
<xml>
<xsl:for-each select="Products/Product">
<xsl:choose>
<xsl:when test="Product/@Code!= ''">
<xsl:variable name="Acost" select="Product/@Cost">
</xsl:variable>
<xsl:variable name="Cost" select="format-
number((($Acost)*1.06),'#.####')"></xsl:variable>
<xsl:variable name="Price" select="format-number((($Cost)
* 1.15),'#.####')"></xsl:variable>
<xsl:variable name="vat" select="Product/@Vat"></xsl:variable>
<xsl:variable name="Barcode" select="Product/@Code"></xsl:variable>
<xsl:variable name="Name" select="Product/@Title"></xsl:variable>
<xsl:variable name="Ctgry" select="Product/@Category">
</xsl:variable>
<xsl:variable name="Brnd" select="Product/@Brand"></xsl:variable>
<xsl:variable name="Dscrptn" select="Description">
</xsl:variable>
<Product>
<BrandName>
<xsl:variable name="amp" select="'&'"></xsl:variable>
<xsl:choose>
<xsl:when test="contains($Brnd,$amp)">
<xsl:text disable-output-escaping="yes"><![CDATA[</xsl:text>
<xsl:value-of select="translate($Brnd,$amp,'&&')"/>
<xsl:text disable-output-escaping="yes">]]></xsl:text>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$Brnd"/>
</xsl:otherwise>
</xsl:choose>
</BrandName>
<Description>
<xsl:text disable-output-escaping="yes"><![CDATA[</xsl:text>
<xsl:value-of select="translate($Dscrptn,'\','')"/>
<xsl:text disable-output-escaping="yes">]]></xsl:text>
</Description>
我无法通过Xslt 1.0解析XML。首先,'Brand =“ N&D”'阻止了它,因此我尝试对其进行修复并翻译,但没有任何效果。然后,描述样式中的反斜杠\阻止了转换事件。我找不到处理方法。
我知道在XSLT转换之前,我必须将“&”转换为“&amp”,如上所示,但是我不能对其使用转换功能。 Xslt总是卡住,不接受我选择的情况来处理它。作为结论,我是否应该要求从XML资源更改为新资源?