xslt를 사용하여 다음 형식의 XML 데이터를 csv 형식으로 변환하려고합니다. 현재 특정 사용자 정의 필드에 대해 다중 값을 출력하려고 시도하고 있습니다. 이것은 내 xml 데이터입니다.xslt-ouput 특정 형식의 다중 값을 사용하는 XML to csv 변환
<input-xml>
<add add-value="First Name">
<value type="string">Newbee</value>
</add>
<add add-value="Surname">
<value type="string">user1</value>
</add>
<add add-value="Title">
<value type="string">Software,engineer</value>
</add>
<add add-value="Title">
<value type="string">Associate level</value>
</add>
<add add-value="Description">
<value type="string">This user is new to xslt.</value>
</add>
</input-xml>
다음은 데이터 변환에 사용하는 xslt 코드의 스 니펫입니다. 로 출력 데이터에 내가 수 있어요 위의 코드와
<xsl:template match="input-xml">
<!-- output the fields in order -->
<xsl:call-template name="output-field">
<xsl:with-param name="field-value" select="*[(@attr-name = 'First')]/value"/>
</xsl:call-template>
.............
.............
<xsl:call-template name="output-field">
<xsl:with-param name="field-value" select="*[(@attr-name = 'Title')]/value"/>
</xsl:call-template>
</xsl:template>
<xsl:template name="output-field">
<xsl:param name="field-value"/>
<xsl:choose>
<xsl:when test="contains($field-value,$delimiter)">
<!-- if the field value contains a delimiter, then enclose in quotes -->
<!--delimiter here is comma (,)-->
<xsl:text>"</xsl:text>
<xsl:value-of select="$field-value"/>
<xsl:text>"</xsl:text>
</xsl:when>
<xsl:otherwise>
<!-- otherwise output it raw -->
<xsl:value-of select="$field-value"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template
:
Newbee,User1,Software engineer,This user is new to xslt.
이만큼 더 여러 값이없는 절대적으로 괜찮습니다. 문제는 '제목'필드에 두 개의 값이 있는데 아래에 따옴표 ("")로 묶어야합니다. 예상 출력 CSV 데이터 : 나는 위의 코드를 확인해야합니다 얼마나 더 진행 .. 이 사람이 나를 도울 수있는 어떤 변화 알아낼 수 아니에요
Newbee,User1,"|Software engineer|,|Associate level|",This user is new to xslt.
.. ??
@LarsH 내가 게시 한 질문에 대한 귀하의 이전 답변은 훌륭합니다. 아래의 xml 형식에서 xslt가 원하는 방식으로 작동하지 않습니다.
내가지고있어 출력은<input-xml>
<add add-value="First Name">
<value type="string">Newbee</value>
</add>
<add add-value="Surname">
<value type="string">user1</value>
<add add-value="Title">
<value type="string">Associate level</value>
<value type="string">Software,engineer</value>
</add>
<add add-value="Description">
<value type="string">This user is new to xslt.</value>
</add>
</input-xml>
Newbee,User1,Software engineerAssociate level,This user is new to xslt.
내가 다른 XSLT이 XML을 처리 할 수 있도록 작성해야합니까 ..? 두 xml 변형을 처리하기 위해 기존 xslt 자체를 수정할 수 있습니까?
파란, 내 대답이 도움이 되었습니까? 그렇지 않다면, 필요한 것이 무엇인지 알려주십시오. 문제가 해결되면 "수락"녹색 체크 표시를 확인하는 것을 잊지 마십시오. – LarsH