J'essaie d'utiliser un composant WebPart de visualisation de données (via SPD 2007) pour consommer les résultats d'un service Web basé sur SOAP et rendre des portions de ces résultats en utilisant des transformations XSL. Le problème que j'ai est que le concepteur n'est pas beaucoup d'aide parce que le schéma pour le service Web n'inclut pas réellement les éléments des résultats, donc il n'y a aucun moyen de faire glisser et déposer de la source de données dans la partie web, et les transformations manuelles que j'ai essayées ne fonctionnent pas.vue des données sharepoint partie Web xslt sans schéma
Voici la définition du service Web:
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<GetQuote xmlns="http://www.webserviceX.NET/">
<symbol>string</symbol>
</GetQuote>
</soap:Body>
</soap:Envelope>
Et la définition de la réponse:
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<GetQuoteResponse xmlns="http://www.webserviceX.NET/">
<GetQuoteResult>string</GetQuoteResult>
</GetQuoteResponse>
</soap:Body>
</soap:Envelope>
La définition de la requête est pas de problème - vous fournissez juste un symbole boursier comme chaîne. Vous verrez de quoi je parle dans les résultats, cependant. Il définit le résultat comme une simple chaîne.
En SPD2007, la source de données assez comprend bien que soap:Envelope/soap:Body/GetQuoteResponse/GetQuoteResult
, mais les résultats réels contenus dans la chaîne de résultat ressemble à ceci:
<StockQuotes>
<Stock>
<Symbol>MSFT</Symbol>
<Last>28.465</Last>
<Date>3/3/2010</Date>
<Time>1:24pm</Time>
<Change>+0.005</Change>
<Open>28.52</Open>
<High>28.61</High>
<Low>28.35</Low>
<Volume>28380812</Volume>
<MktCap>249.7B</MktCap>
<PreviousClose>28.46</PreviousClose>
<PercentageChange>+0.02%</PercentageChange>
<AnnRange>14.87 - 31.50</AnnRange>
<Earns>1.815</Earns>
<P-E>15.68</P-E>
<Name>Microsoft Corpora</Name>
</Stock>
</StockQuotes>
J'ai essayé la mise en place d'une feuille de style XSL comme celui-ci dans les données voir partie web:
<xsl:stylesheet xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:ddw1="http://www.webserviceX.NET/"
version="1.0"
exclude-result-prefixes="xsl msxsl ddwrt"
xmlns:ddwrt="http://schemas.microsoft.com/WebParts/v2/DataView/runtime"
xmlns:asp="http://schemas.microsoft.com/ASPNET/20"
xmlns:__designer="http://schemas.microsoft.com/WebParts/v2/DataView/designer"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt"
xmlns:SharePoint="Microsoft.SharePoint.WebControls"
xmlns:ddwrt2="urn:frontpage:internal">
<xsl:output method="html" indent="yes"/>
<xsl:param name="dvt_apos">'</xsl:param>
<xsl:template match="/soap:Envelope/soap:Body/ddw1:GetQuoteResponse">
<xsl:value-of select="*" />
</xsl:template>
</xsl:stylesheet>
Cela fait à peu près ce à quoi vous vous attendez: il restitue la chaîne de résultat entière. Cependant, si je remplace
<xsl:template match="/soap:Envelope/soap:Body/ddw1:GetQuoteResponse">
<xsl:value-of select="*" />
</xsl:template>
avec
<xsl:template match="/soap:Envelope/soap:Body/ddw1:GetQuoteResponse">
<xsl:value-of select="//Symbol" />
</xsl:template>
Je ne reçois rien. Que se passe-t-il? Comment puis-je utiliser XSL pour choisir le XML dans le résultat de la chaîne sans un schéma?
S'il vous plaît, afficher les * résultat XML réelle *, car il est pas tout à fait clair si vous avez ' ... StockQuotes> GetQuoteResult>' 'ou <StockQuotes> ... </StockQuotes > GetQuoteResult> '. Je soupçonne que c'est le dernier, auquel cas vous êtes assez foutu (et devrait essayer de le changer dans le premier, si c'est possible). –
Tomalak