0
我想使用xsl對xml進行排序。從xml.com得到了一些樣本。它看起來合乎邏輯和直觀。我試過了,有些它沒有排序。它很難讓我的頭在這附近。簡單的XSL排序問題
這裏是我使用排序
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl"
>
<xsl:output method="xml" indent="yes"/>
<xsl:template match="SharePointSites">
<xsl:copy>
<xsl:apply-templates>
<xsl:sort select="Document/@Name"/>
</xsl:apply-templates>
</xsl:copy>
</xsl:template>
<xsl:template match="*">
<xsl:copy>
<xsl:apply-templates/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
下面的XSL,是我想排序的XML。輸出也是一樣的。它不明顯缺少標籤層次結構。正如我從xml.com示例中瞭解的,我也嘗試使用上面的匹配和選擇標籤指定完整的標籤層次結構。
<SharePointSites>
<Site Url="http://workspace.imperial.ac.uk/Activities/default.aspx" Name="Activities">
<Directory Name="Public">
<Document Url="http://workspace.imperial.ac.uk/Activities/Public/Imperial Activities Limited reg no etc.doc" Name="Imperial Activities Limited reg no etc.doc"/>
<Document Url="http://workspace.imperial.ac.uk/Activities/Public/Property Enqiry Form.DOC" Name="Property Enqiry Form.DOC"/>
<Document Url="http://workspace.imperial.ac.uk/Activities/Public/New Property Enquiry Form.doc" Name="New Property Enquiry Form.doc"/>
<Document Url="http://workspace.imperial.ac.uk/Activities/Public/52 Princes Gardens.pdf" Name="52 Princes Gardens.pdf"/>
<Document Url="http://workspace.imperial.ac.uk/Activities/Public/Silwood Web site Photo's.ppt" Name="Silwood Web site Photo's.ppt"/>
<Document Url="http://workspace.imperial.ac.uk/Activities/Public/Service charge.pdf" Name="Service charge.pdf"/>
<Document Url="http://workspace.imperial.ac.uk/Activities/Public/SPIP-G.pdf" Name="SPIP-G.pdf"/>
<Document Url="http://workspace.imperial.ac.uk/Activities/Public/Silwood Business Park pictures.doc" Name="Silwood Business Park pictures.doc"/>
</Directory>
<Directory Name="Internal"/>
</Site>
</SharePointSites>
outup仍然是一樣的。以下是我如何在XML文檔上應用轉換。
XslCompiledTransform myXslTrans = new XslCompiledTransform();
//load the Xsl
myXslTrans.Load(@"C:\My code\dotNet Development\SharepointXML\WebService1\SharepointSiteContent.xslt");
//do the actual transform of Xml document
myXslTrans.Transform(aDoc, null, TransformedxmlWriter);
// Set to document
aTransforemdDoc.InnerXml = aTransformedStrbulider.ToString();
評論沒有格式化選項。因此張貼作爲答覆,請參閱我的帖子上面。 – user376250 2010-06-29 16:17:40
非常感謝Jim的詳細解釋。當您在上一篇文章中提到過時,我瞭解了身份轉換,並未將其應用,因爲我想先解決問題,然後嘗試優化它。使用你的xsl輸出仍然是一樣的。我在應用轉換時做錯了什麼?我已經添加了問題主體中的代碼。 – user376250 2010-06-30 10:09:20
破解它。這是代碼中的一個愚蠢的錯誤。再次感謝所有的幫助和支持。 – user376250 2010-06-30 10:37:25