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