Frage

Ich laufe in ein Problem mit Axis2 und Ajax. Ich erhalte xml von einem meiner Web-Services mit jQuery Ajax-Funktionen und mit dieser jquery Plugin das Ergebnis von xML in hTML zu transformieren.

Hier ist ein Beispiel für die entsprechende xml, dass der Dienst zurückkehrt.

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

Ich schaute durch das XML-Dokument-Objekt, das ich aus dem jQuery Ajax-Aufruf zu erhalten, und es scheint, aus den Tags die Namensräume beraubt zu haben und machte alle Klein die Tags. Allerdings kann ich nicht meine xsl Vorlagen scheinen zu bekommen jede der Tags zu erkennen.

Hier ist, was ich habe jetzt in der 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>

Das Beste, was ich bekommen kann, ist die success1 Option. Ich fand hier über axis2 spielen schöner mit Ajax machen, aber das sieht aus wie könnte es vermasseln die Java-Service-Clients ich habe.

Hier ist die Javascript in Frage.

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

So mache ich etwas Dummes oder gibt es einen besseren Weg, dies zu tun? Vielen Dank für jede Hilfe.

War es hilfreich?

Lösung

Sie sagen, dass Sie denken, Namespaces sind weg, aber ich denke, sie sind es nicht. Warum sollten sie auch?

eine Transformation Versuchen Sie, die Namespaces ignoriert, wie folgt aus:

<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>

oder eine Vorlage, die sie richtig verwendet wird, wie folgt aus:

<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>
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top