Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Json xslt:如何删除缺少标记的逗号_Json_Xml_Xslt - Fatal编程技术网

Json xslt:如何删除缺少标记的逗号

Json xslt:如何删除缺少标记的逗号,json,xml,xslt,Json,Xml,Xslt,嗨,我制作了xslt,它接收xml并以json输出。 我面临的问题是,如果在xml中最后一个标记不存在,它将添加一个逗号并生成无效的json。所以我需要去掉最后一个逗号 我的xslt <?xml version="1.0" encoding="UTF-8"?><xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"><xsl:template match="/">

嗨,我制作了xslt,它接收xml并以json输出。 我面临的问题是,如果在xml中最后一个标记不存在,它将添加一个逗号并生成无效的json。所以我需要去掉最后一个逗号

我的xslt

<?xml version="1.0" encoding="UTF-8"?><xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"><xsl:template match="/">
<xsl:for-each select="Envelope">
{
    <xsl:if test="Enrollment">"Enrollment": 
    [
        <xsl:for-each select="Enrollment">
        {
            <xsl:if test="enrolleeRecords">
            <xsl:for-each select="enrolleeRecords">
            "enrolleeRecords":
            {

                <xsl:if test="employerId">"employerId": "<xsl:value-of select="employerId"/>",</xsl:if>
                <xsl:if test="legalName">"legalName": "<xsl:value-of select="legalName"/>",</xsl:if>
                <xsl:if test="enrolleeList">"enrolleeList":
                [
                    <xsl:for-each select="enrolleeList">
                    {
                        <xsl:if test="refId">"refId": "<xsl:value-of select="refId"/>",</xsl:if>
                        <xsl:if test="enrolleeType">"enrolleeType": "<xsl:value-of select="enrolleeType"/>",</xsl:if>
                        <xsl:if test="employeeId">"employeeId": "<xsl:value-of select="employeeId"/>",</xsl:if>
                        <xsl:if test="personalInfo">
                            <xsl:for-each select="personalInfo">
                            "personalInfo":
                            {
                                <xsl:if test="firstName">"firstName": "<xsl:value-of select="firstName"/>",</xsl:if>
                                <xsl:if test="middleName">"middleName": "<xsl:value-of select="middleName"/>",</xsl:if>
                                <xsl:if test="lastName">"lastName": "<xsl:value-of select="lastName"/>",</xsl:if>
                                <xsl:if test="birthDate">"birthDate": "<xsl:value-of select="birthDate"/>",</xsl:if>
                                <xsl:if test="gender">"gender": "<xsl:value-of select="gender"/>",</xsl:if>
                                <xsl:if test="maritalStatus">"maritalStatus": "<xsl:value-of select="maritalStatus"/>",</xsl:if>
                                <xsl:if test="ssn">"ssn": "<xsl:value-of select="ssn"/>"</xsl:if>
                            },
                            </xsl:for-each>
                        </xsl:if>
                        <xsl:if test="contactDetails">
                        <xsl:for-each select="contactDetails">
                        "contactDetails":
                        {
                            <xsl:if test="enrolleeAddress">
                            <xsl:for-each select="enrolleeAddress">
                            "enrolleeAddress":
                            {
                                <xsl:if test="addressLine1">"addressLine1": "<xsl:value-of select="addressLine1"/>",</xsl:if>
                                <xsl:if test="addressLine2">"addressLine2": "<xsl:value-of select="addressLine2"/>",</xsl:if>
                                <xsl:if test="city">"city": "<xsl:value-of select="city"/>",</xsl:if>
                                <xsl:if test="state">"state": "<xsl:value-of select="state"/>",</xsl:if>
                                <xsl:if test="zip">"zip": "<xsl:value-of select="zip"/>",</xsl:if>
                                <xsl:if test="country">"country": "<xsl:value-of select="country"/>"</xsl:if>
                            }

                            </xsl:for-each>
                            </xsl:if>
                            <xsl:if test="phoneNumber">"phoneNumber": "<xsl:value-of select="phoneNumber"/>",</xsl:if>
                            <xsl:if test="emailAddress">"emailAddress": "<xsl:value-of select="emailAddress"/>"</xsl:if>
                        },
                        </xsl:for-each>
                        </xsl:if>
                    }
                    </xsl:for-each>
                ]</xsl:if>
            }
            </xsl:for-each>
        </xsl:if>
        }
            <xsl:choose>
                <xsl:when test="position() != last()">,</xsl:when>
            </xsl:choose>
        </xsl:for-each>
    ]</xsl:if>
}
    <xsl:choose>
        <xsl:when test="position() != last()">,</xsl:when>
    </xsl:choose>
</xsl:for-each></xsl:template></xsl:stylesheet>

现在的问题是,如果xml缺少标记ssn或country,那么json输出将无效。有人帮我解决这个问题吗

只需将逗号移到以下条件中,即可更改

                ....  ,
  <xsl:if test="zip">"zip": "<xsl:value-of select="zip"/>",</xsl:if>
  <xsl:if test="country">"country": "<xsl:value-of select="country"/>"</xsl:if>


但如果zip和country都缺失,那么情况将保持不变same@salman我的意思是:将所有逗号移到一个类似的测试中,这样只有在添加以下字段时才添加一个逗号。@salman请参见编辑:我试图通过显示相应xsl:ifi所保护的zip和country的逗号来更清楚地说明这一点建议所有标签。但当我的xml输入中缺少personalInfo标记中的firstName时,问题仍然存在,然后在personalInfo的开头添加了额外的逗号。。。。。。。。
  <xsl:if test="zip">,"zip": "<xsl:value-of select="zip"/>"</xsl:if>
  <xsl:if test="country">,"country": "<xsl:value-of select="country"/>"</xsl:if>