Я использую программное обеспечение, которое импортирует XML-файл в рабочий процесс, а затем экспортирует его в веб-службу с помощью задач рабочего процесса. файл XML, как:Вставить XSLT в запрос SOAP
<?xml version="1.0"?>
<NostroEvent>
<Id>1</Id>
<AccountNumber>123</AccountNumber>
<Debit>100</Debit>
</NostroEvent>
Файл импортируется и я пишу следующий запрос SOAP задачи ExportWS, что бы выбрать все теги XML, и отправляет их на веб-службы: (конфигурация подключения к веб-службе также вводится в решении этой задачи в другом разделе)
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<!--xsl:variable name="nostro">
<xsl:copy-of select="NostroEvent"></xsl:copy-of>
</xsl:variable-->
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:bmt="http://bmt">
<soapenv:Header/>
<soapenv:Body>
<bmt:insertNostro>
<bmt:Xml><xsl:copy-of select="NostroEvent"/></bmt:Xml>
</bmt:insertNostro>
</soapenv:Body>
</soapenv:Envelope>
</xsl:template>
</xsl:stylesheet>
Обратите внимание, что insertNostro является веб-метод и Xml является параметр, к которому я передаю набор тегов и текста начиная с NostroEvent. Но это не работает. Я продолжаю получать исключение нулевого указателя, что означает, что веб-служба получила пустую строку. Я попытался использовать переменную xsl наверху, но она также была бесполезной.
Я побежал это успешно, как с помощью Saxon и Xalan. Кажется, что нет ничего плохого в вашем XSLT. – lassejl
Я думаю, что проблема заключается в том, что мой веб-сервис ожидает строку Xml, и я передаю поддерево с xsl: copy-by вместо строки. Вот почему это дает мне исключение null-указателя. Но я не знаю, как преобразовать возвращаемое значение xsl: copy-in в строку –
DalalH