كيف يمكنني تحويل XML من خدمات axis2 باستخدام مسج و AJAX؟

StackOverflow https://stackoverflow.com/questions/656459

سؤال

وأنا على التوالي في مشكلة مع axis2 واياكس. انني اتلقى أكس من واحدة من الخدمات الويب الخاص بي مع وظائف اياكس مسج ل، واستخدام هذا مسج البرنامج المساعد لتحويل أكس نتيجة إلى HTML.

وهنا مثال من أكس ذات الصلة التي تقوم بإرجاع خدمة.

<ns:getPatientsByDoctorResponse>
    <ns:return type="com.emolst.jdbc.PatientBean">
        <ax23:firstName>Bryce</ax23:firstName>
        <ax23:lastName>Thompson</ax23:lastName>
    </ns:return>
</ns:getPatientsByDoctorResponse>

ونظرت من خلال الكائن مستند XML أن أحصل من استدعاء أياكس مسج، ويبدو أنها قد جردت مساحات من العلامات وجعل علامات كل صغيرة. ومع ذلك، وأنا لا يمكن أن يبدو للحصول على بلدي قوالب XSL لتعترف بأي من العلامات.

وإليك ما لدي الآن في XSL.

<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="html" indent="yes"/>

    <xsl:template match="/">
        <option>success1</option>
        <xsl:apply-templates/>
    </xsl:template>

    <xsl:template match="//return">
        <option>success2</option>
        <option>
            <xsl:value-of select="firstname"/> <xsl:value-of select="lastname"/>
        </option>
    </xsl:template>
</xsl:transform>

وأفضل ما يمكن أن تحصل عليه هو الخيار success1. لقد وجدت بعض المعلومات هنا عن جعل axis2 اللعب أجمل مع اياكس، ولكن الذي يبدو أنه قد المسمار خدمة العملاء جافا لدي.

وهنا جافا سكريبت في المسألة.

$("select[name=patientlist]").transform({
    xml:{
        url:"/axis2/services/PatientService/getPatientsByDoctor",
        data {
            docKey: "6"
        },
        type:"GET",
        dataType:"xml"
    },
    xsl:"xsl/patients-option.xsl"
});

وهكذا أفعل شيء غبي أم أن هناك طريقة أفضل للقيام بذلك؟ شكرا على اي مساعدة.

هل كانت مفيدة؟

المحلول

وكنت أقول إن كنت تعتقد ولت النطاقات، ولكن أعتقد أنها ليست كذلك. لماذا يفعلون ذلك؟

وحاول التحول الذي يتجاهل النطاقات، مثل هذا:

<xsl:transform 
  version="1.0" 
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

    <xsl:output method="html" indent="yes"/>

    <xsl:template match="/">
        <option>success1</option>
        <xsl:apply-templates/>
    </xsl:template>

    <xsl:template match="//*[local-name()='return']">
        <option>success2</option>
        <option>
            <xsl:value-of select="*[local-name()='firstname']"/>
            <xsl:text> </xsl:text>
            <xsl:value-of select="*[local-name()='lastname']"/>
        </option>
    </xsl:template>

</xsl:transform>

وأو القالب الذي يستخدم بشكل صحيح، مثل هذا:

<xsl:transform 
  version="1.0" 
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  xmlns:ax23="........ax23 namespace here........"
  xmlns:ns="........ns namespace here........"
>

    <xsl:output method="html" indent="yes"/>

    <xsl:template match="/">
        <option>success1</option>
        <xsl:apply-templates/>
    </xsl:template>

    <xsl:template match="ns:return">
        <option>success2</option>
        <option>
            <xsl:value-of select="ax23:firstname"/>
            <xsl:text> </xsl:text>
            <xsl:value-of select="ax23:lastname"/>
        </option>
    </xsl:template>

</xsl:transform>
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top