SOAP 뷰 기반 웹 서비스의 결과를 소비하고 XSL 변환을 사용하여 결과의 일부를 렌더링하기 위해 데이터 뷰 웹 파트 (SPD 2007 사용)를 사용하려고합니다. 제가 가지고있는 문제는 웹 서비스의 스키마가 결과의 요소를 실제로 포함하지 않기 때문에 디자이너가별로 도움이되지 않는다는 것입니다. 따라서 데이터 소스에서 웹 파트로 드래그 앤 드롭 할 방법이 없습니다. 시도한 수동 변환이 작동하지 않습니다.셰어 포인트 데이터보기 스키마가없는 웹 파트 xslt
<?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>
그리고 응답의 정의 : : 여기
는 웹 서비스의 정의입니다<?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>
쿼리 정의는 문제가되지 않습니다 - 당신은 단지로 주식 시세 기호를 제공 끈. 내가 결과에 대해 이야기하는 것을 볼 수 있습니다. 결과를 단지 문자열로 정의합니다.
SPD2007에서 데이터 소스는 거의 유일한 soap:Envelope/soap:Body/GetQuoteResponse/GetQuoteResult
을 포함하지만, 결과 문자열에 포함 된 실제 결과는 다음과 같다 : I 데이터에서이 같은 XSL 스타일 시트를 설정하려고했습니다
<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>
웹 파트보기 :
<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>
이것은 예상했던대로입니다. 전체 결과 문자열을 렌더링합니다. 그러나, 나는 내가 아무것도 얻을
<xsl:template match="/soap:Envelope/soap:Body/ddw1:GetQuoteResponse">
<xsl:value-of select="//Symbol" />
</xsl:template>
와
<xsl:template match="/soap:Envelope/soap:Body/ddw1:GetQuoteResponse">
<xsl:value-of select="*" />
</xsl:template>
을 대체합니다. 무슨 일이야? 스키마없이 문자열 결과에서 XML을 선택하기 위해 XSL을 사용하려면 어떻게해야합니까?
이는 * 실제 *의 XML 결과를 게시하시기 바랍니다' ... StockQuotes> GetQuoteResult>'또는' <StockQuotes> ... </StockQuotes > GetQuoteResult>'. 나는 후자라고 생각합니다.이 경우에 당신은 꽤 망쳐 놨습니다. 그리고 가능하다면 그것을 이전으로 변경하려고 노력해야합니다. –
Tomalak