У меня есть исходный XML, какСкопируйте XML узел на основе равноправного узла
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Body>
<urn:LookupRecords xmlns:urn="urn:RedIron.RetailRepository.Services.SearchService" xmlns:a="urn:RedIron.RetailRepository.Core" xmlns:arr="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
<urn:query>
<a:Headers>
<a:SearchHeader>
<a:Name>MAX_RESULTS</a:Name>
<a:ProviderGuid>00000000-0000-0000-0000-000000000000</a:ProviderGuid>
<a:Value>10</a:Value>
</a:SearchHeader>
<a:SearchHeader>
<a:Name>CASHIER</a:Name>
<a:Value>1706</a:Value>
</a:SearchHeader>
<a:SearchHeader>
<a:Name>RECEIPT_LOOKUP</a:Name>
<a:Value>CustomerReceipt</a:Value>
</a:SearchHeader>
</a:Headers>
<a:Params>
<arr:KeyValueOfguidArrayOfQueryParametertmL6yAXy>
<arr:Key>{4de38819-43bf-4333-a17b-049ec32703c3}</arr:Key>
<arr:Value>
<a:QueryParameter>
<a:Name>TRAINING_MODE</a:Name>
<a:Value>FALSE</a:Value>
</a:QueryParameter>
<a:QueryParameter>
<a:Name>STORE</a:Name>
<a:Value>121</a:Value>
</a:QueryParameter>
<a:QueryParameter>
<a:Name>REGISTER</a:Name>
<a:Value>2</a:Value>
</a:QueryParameter>
<a:QueryParameter>
<a:Name>TRANSACTION_NUMBER</a:Name>
<a:Value>1843</a:Value>
</a:QueryParameter>
<a:QueryParameter>
<a:Name>TRANSACTION_DATE_YEAR</a:Name>
<a:Value>2016</a:Value>
</a:QueryParameter>
<a:QueryParameter>
<a:Name>TRANSACTION_DATE_MONTH</a:Name>
<a:Value>12</a:Value>
</a:QueryParameter>
<a:QueryParameter>
<a:Name>TRANSACTION_DATE_DAY</a:Name>
<a:Value>20</a:Value>
</a:QueryParameter>
<a:QueryParameter>
<a:Name>CONCEPT</a:Name>
<a:Value>WS</a:Value>
</a:QueryParameter>
</arr:Value>
</arr:KeyValueOfguidArrayOfQueryParametertmL6yAXy>
</a:Params>
</urn:query>
</urn:LookupRecords>
</soapenv:Body>
</soapenv:Envelope>
Я хочу, чтобы получить результат XML в качестве
<Lookup xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" content="sample string 1" type="sample string 2" pageIndex="sample string 3" pageSize="sample string 4" tranSortOrder="sample string 5">
<RequestData TrainingModeFlag="False" Store="sample string 1" Operator="sample string 2" Terminal="sample string 3">
<TRANSACTION_DATE_YEAR>2016</TRANSACTION_DATE_YEAR>
<TRANSACTION_DATE_MONTH>sample string 15</TRANSACTION_DATE_MONTH>
<TransactionNumber>sample string 17</TransactionNumber>
</RequestData>
</Lookup>
Я использую XSLT Для того, чтобы получить то же самое, как
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:a="urn:RedIron.RetailRepository.Core"
version="2.0">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match = "a:QueryParameter" >
<xsl:apply-templates select="a:QueryParameter[a:Name='TRANSACTION_NUMBER']/a:Value"/>
</xsl:template>
<xsl:template match="/">
<Lookup tranSortOrder="sample string 5"
pageSize="sample string 4"
pageIndex="sample string 3"
type="sample string 2"
content="sample string 1"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<RequestData Terminal="sample string 3"
Operator="sample string 2"
Store="sample string 1"
TrainingModeFlag="False">
<OrderNumber>
</OrderNumber>
<TransactionNumber>
<xsl:apply-templates />
</TransactionNumber>
</RequestData>
</Lookup>
</xsl:template>
</xsl:stylesheet>
Использование Xpath в: QueryParameter [а: Имя = ''] TRANSACTION_NUMBER/A: Значение
Я не получаю желаемый комплект (который является 1843)
Пожалуйста, скажите мне, где я ошибаюсь?
Пожалуйста, отредактируйте ваш вопрос и предоставите корректно сформированный XML в качестве примера ввода. –
Привет, Майкл, Обновлен с хорошо сформированным XML – sagar