Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
尝试在commerce server 2009中查找XSLT的XML_Xml_Xslt - Fatal编程技术网

尝试在commerce server 2009中查找XSLT的XML

尝试在commerce server 2009中查找XSLT的XML,xml,xslt,Xml,Xslt,我试图从XML中获取XPath,以便使用XSLT从XML中检索数据。我的问题是我看不到XML,需要它在XSLT中提供XPath。我如何知道哪个XSLT使用哪个XML。我正在研究商务服务器2009的搜索Web部件 Tsheten 我感觉到你的痛苦。首先,让我帮助您更好地了解正在使用的SharePoint扩展工具包的体系结构。正如您可能已经看到的,在扩展性工具包中,有两个主要项目控制搜索的执行以及结果的转换和表示 控制器层 如果打开Microsoft.Commerce.sln解决方案,请导航到门户>

我试图从XML中获取XPath,以便使用XSLT从XML中检索数据。我的问题是我看不到XML,需要它在XSLT中提供XPath。我如何知道哪个XSLT使用哪个XML。我正在研究商务服务器2009的搜索Web部件

Tsheten

我感觉到你的痛苦。首先,让我帮助您更好地了解正在使用的SharePoint扩展工具包的体系结构。正如您可能已经看到的,在扩展性工具包中,有两个主要项目控制搜索的执行以及结果的转换和表示

控制器层 如果打开Microsoft.Commerce.sln解决方案,请导航到门户>公用>控制器文件夹。在这里,您将看到包含用于创建和执行CRUD操作的代码的所有控制器(CuffcQueAudio、CurruteUpDead、CurrdSeleTeleTM和CurreCeCeRead)。 在SearchController.cs中,您将看到一个名为DoProductQuerySearch的方法。此方法负责通过Cudio基金会执行产品查询。请参阅下面的代码片段,以了解我所说的示例:

    /// <summary>
    /// Performs a product query search.
    /// </summary>
    /// <param name="catalogName">The catalogName</param>
    /// <param name="categoryName">The categoryName</param>
    /// <param name="requiredProperties">The required product properties</param>
    /// <param name="searchPhrase">The search phrase</param>
    /// <param name="whereClause">The where clause</param>
    /// <param name="orderKey">The property by which the search results should be sorted.</param>
    /// <param name="sortOrder">The direction by which the search results should be sorted.</param>
    /// <param name="recordIndex">The index of the first result to return</param>
    /// <param name="recordsPerPage">The number of records to return.</param>
    /// <param name="totalResultCount">An out parameter for the totalResultCount.  That is, the total number of hits for the search.</param>
    /// <returns>A list of Products.</returns>
    public static List<Product> DoProductQuerySearch(string catalogName, string categoryName, List<string> requiredProperties, string searchPhrase, string whereClause, string orderKey, Microsoft.Commerce.Contracts.Messages.SortDirection sortOrder, int recordIndex, int recordsPerPage, out int totalResultCount)
    {
        List<Product> products = new List<Product>();

        var query = new CommerceQuery<CatalogEntity, CommerceCatalogFullTextSearchBuilder>();
        query.SearchCriteria.Catalogs.Add(catalogName);
        query.SearchCriteria.FirstItemIndex = recordIndex;
        query.SearchCriteria.FullTextSearchType = CommerceFullTextSearchType.FreeText;
        query.SearchCriteria.NumberOfItemsToReturn = recordsPerPage;
        query.SearchCriteria.ReturnTotalItemCount = true;
调试w3wp.exe工作进程,当您遇到此断点时,将productXml.ToString()添加到监视窗口,并更改Visual Studio中的查看器,以允许您以XML形式查看监视窗口中的输出。然后将xml复制到记事本。这将允许您在编程XSLT模板中的更改时使用示例XML输出,以便XPath正确地遍历DOM

更新了对“CANBEDOWNLOADED属性未返回”的响应 搜索Web部件检索到的搜索属性由产品属性选取器控制,该选取器通过导航到SharePoint网站的专用网站Intranet版本,并从Web部件属性菜单中选择“修改共享Web部件”找到。在那里,您将找到一个区域来指定在产品查询中应该返回哪些属性。 当搜索控制器执行doBufftQuyReQuess时,更改活动属性以有效地更改产品Cube实体从Cuffic基金会请求的属性。XSLT很可能失败,因为要返回集合的属性不包含CanBeDowloaded属性,因为web部件没有将其传递回控制器。我将在SearchController.DoProductQuerySearch中放置一个断点,并查看传入的属性。在紧跟在下面一个断点之后的行上放置断点:

 var query = new CommerceQuery<CatalogEntity, CommerceCatalogFullTextSearchBuilder>();
var query=new CommerceQuery();

然后,将query.Model.Properties添加到调试器的“监视”窗口中,并查看您在XPATH语句中查找的属性是否实际设置为返回。如果您要在另一个Web部件中返回该属性,则意味着您在MetaDataDefinitions.xml文件中对该属性的配置是正确的,因此这不是罪魁祸首。很可能是因为您的web部件未正确配置,无法在产品查询中请求CanBeDownloaded属性。

您可以在web部件属性中更改它。上面的帖子有。如果您使用的是默认扩展工具包,那么您应该能够使用产品选择器简单地添加它。

您必须展示您的XML、XSLT和XPath工作。这样别人才能帮助你。如果不展示你的作品,没有人能帮助你。非常感谢你!我正在努力。当我使用PartSearchWebPart时,我使用的是Xpath,我也想在SearchWebPart上使用相同的Xpath,但它不起作用。我想可能是我使用了错误的Xpath,所以我想看看XML。我的方法可能是错误的,如果你有任何想法,请让我知道。再次感谢你的帮助。令人惊叹的!!谢谢!!如何在web部件中添加CanBeDownloaded属性?我是这项技术的新手,所以请原谅我问了一些愚蠢的问题。
   private string OutputProducts()
    {
        StringBuilder xmlSb = new StringBuilder(this._products.Count * 512);

        xmlSb.Append(XmlElementStartOpen); // <
        xmlSb.Append(XmlRootNodeName);
        xmlSb.Append(XmlElementStartClose); // >

        foreach (Product item in this._products)
        {
            this.OutputCatalogItem(xmlSb, item);
        }

        xmlSb.Append(XmlElementEndOpen); // </
        xmlSb.Append(XmlRootNodeName);
        xmlSb.Append(XmlElementEndClose); // >

        return xmlSb.ToString();
    } 
 private void OutputCatalogItem(StringBuilder xmlSb, ICommerceEntity catalogItem, string xmlNodeName)
    {
        System.Diagnostics.Debug.Assert(xmlSb != null, "The value of xmlSb should never be null.");

        xmlSb.Append(XmlElementStartOpen); // <
        xmlSb.Append(xmlNodeName);
        xmlSb.Append(" ");
        xmlSb.Append(Product.PropertyName.Id);
        xmlSb.Append(XmlAttributeEqualAndQuote); // ='
        xmlSb.Append(catalogItem.Properties[Product.PropertyName.Id]);
        xmlSb.Append(XmlAttributeQuote); // '
        xmlSb.Append(XmlElementEndClose); // >

        this.OutputProperties(xmlSb, catalogItem, this._productProperties);

        this.OutputRelatedCatalogItems(xmlSb, catalogItem, HierarchicalCatalogEntity.RelationshipName.CrossSells, XmlCrossSellsNodeName);
        this.OutputRelatedCatalogItems(xmlSb, catalogItem, HierarchicalCatalogEntity.RelationshipName.UpSells, XmlUpSellsNodeName);
        this.OutputRelatedCatalogItems(xmlSb, catalogItem, HierarchicalCatalogEntity.RelationshipName.KitContents, XmlKitContentsNodeName);

        this.OutputCategoryProducts(xmlSb, XmlCategoryProductsNodeName);
        this.OutputRelatedCatalogItems(xmlSb, catalogItem, Product.RelationshipName.Variants, XmlVariantsNodeName);
        this.OutputPersonalNotes(xmlSb);

        xmlSb.Append(XmlElementEndOpen); // </
        xmlSb.Append(xmlNodeName);
        xmlSb.Append(XmlElementEndClose); // >

        xmlSb.ToString();
    }
    **this.RenderResults(xsltArgList, productXml.ToString());**
 var query = new CommerceQuery<CatalogEntity, CommerceCatalogFullTextSearchBuilder>();