首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >xslt 1.0转换帮助

xslt 1.0转换帮助
EN

Stack Overflow用户
提问于 2010-09-06 22:12:39
回答 2查看 177关注 0票数 0

我需要一些关于xsl转换的帮助,我不知道如何开始,因为我是一个新手。

我有一个xml方案:

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<GetUserCollectionFromSiteResponse xmlns="http://schemas.microsoft.com/sharepoint/soap/directory/">
<GetUserCollectionFromSiteResult>
    <GetUserCollectionFromSite>
        <Users>
            <User ID="87" Sid="S-1-5-21-2025429265-1935655697-839522115-7617" Name="Falco Lannoo" LoginName="Domain\flannoo" Email="falco.lannoo@email.com" Notes="" IsSiteAdmin="False" IsDomainGroup="False" />
            <User ID="31" Sid="S-1-5-21-2025429265-1935655697-839522115-2721" Name="John Smith" LoginName="Domain\jsmith" Email="john.smith@email.com" Notes="" IsSiteAdmin="False" IsDomainGroup="False" />
        </Users>
    </GetUserCollectionFromSite>
</GetUserCollectionFromSiteResult>

我想把它变成这样:

代码语言:javascript
复制
<ns0:userInfo xmlns:ns0="http://Sharepoint.userInfo">
    <ID>218</ID>
    <Name>Falco Lannoo</Name>
</ns0:userInfo>

所以我想选择loginname = "Domain\flannoo“的节点。任何人都可以帮助我进行这种转换,它必须是在XSLT1.0中

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-09-06 22:30:06

此样式表:

代码语言:javascript
复制
<xsl:stylesheet  version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:ns0="http://Sharepoint.userInfo"
xmlns:soap="http://schemas.microsoft.com/sharepoint/soap/directory/"
exclude-result-prefixes="soap">
    <xsl:template match="soap:User[@LoginName='Domain\flannoo']">
        <ns0:userInfo>
            <xsl:apply-templates select="@*" />
        </ns0:userInfo>
    </xsl:template>
    <xsl:template match="@*"/>
    <xsl:template match="@ID|@Name">
        <xsl:element name="{name()}">
            <xsl:value-of select="." />
        </xsl:element>
    </xsl:template>
</xsl:stylesheet>

通过适当的输入:

代码语言:javascript
复制
<GetUserCollectionFromSiteResponse xmlns="http://schemas.microsoft.com/sharepoint/soap/directory/">
    <GetUserCollectionFromSiteResult>
        <GetUserCollectionFromSite>
            <Users>
                <User ID="87" Sid="S-1-5-21-2025429265-1935655697-839522115-7617" Name="Falco Lannoo" LoginName="Domain\flannoo" Email="falco.lannoo@email.com" Notes="" IsSiteAdmin="False" IsDomainGroup="False" />
                <User ID="31" Sid="S-1-5-21-2025429265-1935655697-839522115-2721" Name="John Smith" LoginName="Domain\jsmith" Email="john.smith@email.com" Notes="" IsSiteAdmin="False" IsDomainGroup="False" />
            </Users>
        </GetUserCollectionFromSite>
    </GetUserCollectionFromSiteResult>
</GetUserCollectionFromSiteResponse>

输出:

代码语言:javascript
复制
<ns0:userInfo xmlns:ns0="http://Sharepoint.userInfo">
    <ID>87</ID>
    <Name>Falco Lannoo</Name>
</ns0:userInfo>
票数 1
EN

Stack Overflow用户

发布于 2010-09-09 20:17:18

这是Alejandro答案的另一种选择。这在很大程度上是一个样式问题,但如果您必须将其集成到一个更复杂的样式表中,这可能是相关的。

代码语言:javascript
复制
<xsl:stylesheet  version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:ns0="http://Sharepoint.userInfo"
xmlns:soap="http://schemas.microsoft.com/sharepoint/soap/directory/"
exclude-result-prefixes="soap">
    <xsl:template match="/">
    <xsl:apply-templates select="//soap:User[@ID='87']"/>
    </xsl:template>
    <xsl:template match="soap:User">
        <ns0:userInfo>
            <ID><xsl:value-of select="@ID"/></ID>
            <Name><xsl:value-of select="@Name"/></Name>
        </ns0:userInfo>
    </xsl:template>
</xsl:stylesheet>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3652139

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档