我正在使用Banxico Web服務,它返回一個字符串,在該字符串中有XML。如何將字符串xml轉換爲XML節點XSLT
我真正需要的是使用XSLT或XPath提取下一部分。
怎樣才能使用XSLT或Xpath?
Pesos pordólarE.U.A. TIPO德坎比奧第solventar obligaciones denominadas烯莫內達extranjera出生日期解determinación(FIX)」 IDSERIE = 「SF43718」 BANXICO_FREQ = 「直徑」 BANXICO_FIGURE_TYPE = 「TipoCambio」 BANXICO_UNIT_TYPE = 「PesoxDoll」>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Header>
<X-OPNET-Transaction-Trace:X-OPNET-Transaction-Trace soapenv:actor="http://schemas.xmlsoap.org/soap/actor/next" soapenv:mustUnderstand="0" xsi:type="soapenc:string" xmlns:X-OPNET-Transaction-Trace="http://opnet.com" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">pid=4468,requestid=4d0ce60a-c92f-441e-87b1-4c6f12b26574</X-OPNET-Transaction-Trace:X-OPNET-Transaction-Trace>
</soapenv:Header>
<soapenv:Body>
<ns1:tiposDeCambioBanxicoResponse soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns1="http://ws.dgie.banxico.org.mx">
<result xsi:type="xsd:string"><![CDATA[<?xml version="1.0" encoding="ISO-8859-1"?>
<CompactData xmlns="http://www.SDMX.org/resources/SDMXML/schemas/v1_0/message"
xmlns:bm="http://www.banxico.org.mx/structure/key_families/dgie/sie/series/compact"
xmlns:compact="http://www.SDMX.org/resources/SDMXML/schemas/v1_0/compact"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.SDMX.org/resources/SDMXML/schemas/v1_0/message SDMXMessage.xsd
http://www.banxico.org.mx/structure/key_families/dgie/sie/series/compact BANXICO_DGIE_SIE_Compact.xsd
http://www.SDMX.org/resources/SDMXML/schemas/v1_0/compact SDMXCompactData.xsd" >
<Header>
<ID>TIPOSDECAMBIO</ID>
<Test>false</Test>
<Truncated>false</Truncated>
<Name xml:lang="sp">Tipos de Cambio</Name>
<Prepared>2016-12-15 12:26:37.766</Prepared>
<Sender id="BANXICO">
<Name xml:lang="sp">Banco de México</Name>
<Contact>
<Name xml:lang="sp">Subgerencia de Desarrollo de Sistemas</Name>
<Telephone>(01 55)52372678</Telephone>
</Contact>
</Sender>
<DataSetAction>Update</DataSetAction>
<Extracted>2016-12-15 12:26:37.766</Extracted>
</Header>
<bm:DataSet>
<bm:SiblingGroup BANXICO_FREQ="Dia" TIME_FORMAT="P1D"/>
<bm:Series TITULO="Tipo de cambio pesos por dólar E.U.A. Tipo de cambio para solventar obligaciones denominadas en moneda extranjera Fecha de liquidación" IDSERIE="SF60653" BANXICO_FREQ="Dia" BANXICO_FIGURE_TYPE="TipoCambio" BANXICO_UNIT_TYPE="PesoxDoll">
<bm:Obs TIME_PERIOD="2016-12-15" OBS_VALUE="20.2567"/>
</bm:Series>
<bm:Series TITULO="Tipo de cambio Pesos por dólar E.U.A. Tipo de cambio para solventar obligaciones denominadas en moneda extranjera Fecha de determinación (FIX)" IDSERIE="SF43718" BANXICO_FREQ="Dia" BANXICO_FIGURE_TYPE="TipoCambio" BANXICO_UNIT_TYPE="PesoxDoll">
<bm:Obs TIME_PERIOD="2016-12-15" OBS_VALUE="20.5973"/>
</bm:Series>
<bm:Series TITULO="Cotización de las divisas que conforman la canasta del DEG Respecto al peso mexicano Euro" IDSERIE="SF46410" BANXICO_FREQ="Dia" BANXICO_FIGURE_TYPE="TipoCambio" BANXICO_UNIT_TYPE="Peso">
<bm:Obs TIME_PERIOD="2016-12-14" OBS_VALUE="21.535"/>
</bm:Series>
<bm:Series TITULO="Cotización de la divisa Respecto al peso mexicano Dólar Canadiense" IDSERIE="SF60632" BANXICO_FREQ="Dia" BANXICO_FIGURE_TYPE="TipoCambio" BANXICO_UNIT_TYPE="Peso">
<bm:Obs TIME_PERIOD="2016-12-14" OBS_VALUE="15.4178"/>
</bm:Series>
<bm:Series TITULO="Cotización de las divisas que conforman la canasta del DEG Respecto al peso mexicano Yen japonés" IDSERIE="SF46406" BANXICO_FREQ="Dia" BANXICO_FIGURE_TYPE="TipoCambio" BANXICO_UNIT_TYPE="Peso">
<bm:Obs TIME_PERIOD="2016-12-14" OBS_VALUE="0.176"/>
</bm:Series>
<bm:Series TITULO="Cotización de las divisas que conforman la canasta del DEG Respecto al peso mexicano Libra esterlina" IDSERIE="SF46407" BANXICO_FREQ="Dia" BANXICO_FIGURE_TYPE="TipoCambio" BANXICO_UNIT_TYPE="Peso">
<bm:Obs TIME_PERIOD="2016-12-14" OBS_VALUE="25.5806"/>
</bm:Series>
</bm:DataSet>
</CompactData>]]></result>
</ns1:tiposDeCambioBanxicoResponse>
</soapenv:Body>
</soapenv:Envelope>
有了這種反應我建立一個XSD架構。
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="http://www.banxico.org.mx/structure/key_families/dgie/sie/series/compact" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="DataSet">
<xs:complexType>
<xs:sequence>
<xs:element name="SiblingGroup">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute type="xs:string" name="BANXICO_FREQ"/>
<xs:attribute type="xs:duration" name="TIME_FORMAT"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="Series" maxOccurs="unbounded" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element name="Obs">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute type="xs:date" name="TIME_PERIOD" use="optional"/>
<xs:attribute type="xs:float" name="OBS_VALUE" use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute type="xs:string" name="TITULO" use="optional"/>
<xs:attribute type="xs:string" name="IDSERIE" use="optional"/>
<xs:attribute type="xs:string" name="BANXICO_FREQ" use="optional"/>
<xs:attribute type="xs:string" name="BANXICO_FIGURE_TYPE" use="optional"/>
<xs:attribute type="xs:string" name="BANXICO_UNIT_TYPE" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
您可以使用哪種版本的XSLT或XPath?由於內部XML以CDATA節的形式轉義,因此需要兩個分析步驟,如果您想在純XSLT或XPath中執行此操作,則需要XSLT/XPath 3.0或支持擴展來解析XML的實現。 –