我不完全知道在那里我的错误是目前我这里的样式表:不需要节点
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet exclude-result-prefixes="exsl xs"
extension-element-prefixes="exsl" version="2.0"
xmlns:exsl="http://exslt.org/common"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<!--xsl:import-schema schema-location="ProductFeed5.6.xsd"/-->
<xsl:output method="xml" indent="yes" encoding="UTF-8"
byte-order-mark="no" omit-xml-declaration="no"
xmlns="http://www.bazaarvoice.com/xs/PRR/ProductFeed/5.6" />
<xsl:strip-space elements="*" />
<!-- Parameter to determine when using 'contoursbaby' or 'kolcraft' feed
values -->
<xsl:param name="feedName" as="xs:string" />
<!-- copy all nodes that do not match a given template -->
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()" />
</xsl:copy>
</xsl:template>
<xsl:template match="/*">
<xsl:choose>
<xsl:when test="starts-with(name(), 'dataroot_')">
<xsl:element name="Feed" namespace="http://www.bazaarvoice.com/xs/PRR/ProductFeed/5.6">
<xsl:attribute name="name" select="$feedName" />
<xsl:attribute name="incremental" select="'false'" />
<xsl:attribute name="extractDate"><xsl:value-of select='current-dateTime()' /></xsl:attribute>
<xsl:if test="not(empty($feedName))">
<xsl:choose>
<xsl:when test="$feedName eq 'kolcraft'">
<xsl:copy-of select="exsl:node-set(document('kolcraft-brands.xml'))" />
<xsl:copy-of select="exsl:node-set(document('kolcraft-categories.xml'))" />
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="document('contours-categories.xml')" />
</xsl:otherwise>
</xsl:choose>
<xsl:copy>
<xsl:apply-templates select="recordset" />
</xsl:copy>
</xsl:if>
</xsl:element>
</xsl:when>
</xsl:choose>
</xsl:template>
<xsl:template match="recordset">
<Products>
<xsl:for-each select="row">
<Product>
<xsl:attribute name="removed" select="'false'" />
<xsl:apply-templates select="@*|node()" />
</Product>
</xsl:for-each>
</Products>
</xsl:template>
<xsl:template match="F1">
<ExternalId><xsl:value-of select="." /></ExternalId>
</xsl:template>
<xsl:template match="F2">
<UPCs>
<UPC><xsl:value-of select="." /></UPC>
</UPCs>
</xsl:template>
<xsl:template match="F3">
<Name><xsl:value-of select="." /></Name>
</xsl:template>
<xsl:template match="F4">
<Description><xsl:value-of select="." /></Description>
</xsl:template>
<xsl:template match="F5">
<ProductPageUrl><xsl:value-of select="." /></ProductPageUrl>
</xsl:template>
<xsl:template match="F6">
<ImageUrl><xsl:value-of select="." /></ImageUrl>
</xsl:template>
<xsl:template match="F7">
<CategoryExternalId><xsl:value-of select="lower-case(normalize-space(replace(., '[/ ]', '-')))" /></CategoryExternalId>
</xsl:template>
<xsl:template match="fielddescription" />
</xsl:stylesheet>
有我有2个问题,我不知道他们为什么会发生: 1. <Brands>
& <Categories>
被导入时会得到一个空的名称空间 2. <dataroot_r00295>
继续显示为根<Feed>
的第一个子项。
下面是其使用的那种源文件中的一个片段:
<?xml version="1.0" encoding="ISO-8859-1"?>
<dataroot_r00295>
<fielddescription>
<F1>ExternalID</F1>
<F2>UPC</F2>
<F3>Name</F3>
<F4>Description</F4>
<F5>ProductPageUrl</F5>
<F6>ProductImageUrl</F6>
<F7>CategoryExternalID</F7>
</fielddescription>
<recordset>
<row>
<F1>ED003-QCX</F1>
<F2>031878025147</F2>
<F3>Sealy Naturals-Cotton Crib Mattress Pad</F3>
<F4>Give baby plush comfort from natural cotton fibers with the innovative Sealy Naturals-Cotton Crib Mattress Pad.</F4>
<F5>http://www.kolcraft.com/sealy-naturals-cotton-crib-mattress-pad.html</F5>
<F6>http://www.kolcraft.com/media/catalog/product/e/d/ed003-qcx-1_1_4.jpg</F6>
<F7>Bedding/Pads</F7>
</row>
</recordset>
</dataroot_r00295>
下面是什么它会产生一个片段:
<?xml version="1.0" encoding="UTF-8"?>
<Feed extractDate="2016-05-05T19:32:27.863-05:00"
incremental="false"
name="kolcraft"
xmlns="http://www.bazaarvoice.com/xs/PRR/ProductFeed/5.6">
<Brands xmlns="">
<Brand removed="false">
<ExternalId>brands</ExternalId>
<Name>Brands</Name>
<!--BrandPageUrl>http://www.kolcraft.com/brands.html</BrandPageUrl -->
</Brand>
</Brands>
<Categories xmlns="">
<Category removed="false">
<ExternalId>baby-products</ExternalId>
<Name>Baby Products</Name>
<CategoryPageUrl>http://www.kolcraft.com/baby-products.html</CategoryPageUrl>
</Category>
</Categories>
<dataroot_r00295 xmlns="">
<Products>
<Product removed="false">
<ExternalId>ED003-QCX</ExternalId>
<UPCs>
<UPC>031878025147</UPC>
</UPCs>
<Name>Sealy Naturals-Cotton Crib Mattress Pad</Name>
<Description>
Give baby plush comfort from natural cotton fibers with the innovative Sealy Naturals-Cotton
Crib Mattress Pad.
</Description>
<ProductPageUrl>http://www.kolcraft.com/sealy-naturals-cotton-crib-mattress-pad.html</ProductPageUrl>
<ImageUrl>http://www.kolcraft.com/media/catalog/product/e/d/ed003-qcx-1_1_4.jpg</ImageUrl>
<CategoryExternalId>bedding-pads</CategoryExternalId>
</Product>
</Products>
</dataroot_r00295>
</Feed>
谁能解释这是怎么回事错在我的样式表?我很难过。
另外:如果还有其他方法可以更有效地使用模板,请随时教我使用XSLT的正确方法。
您是拉从其他文档中的数据,我们无法在这里看到这有可能其中''和''派生出哪些没有像'' –
Parfait
这样的名称空间定义,我添加了这些文档包含的片段; ''和''是这些内含物的一部分。 –