xml을 한 형식에서 다른 형식으로 변환하는 .xslt가 있습니다 (사용하지 않고 xsd이므로 한 스키마에서 다른 것으로 말할 필요가 없습니다). 내 문제는 번역에서 원래 파일의 인코딩 '이 손실된다는 것입니다. 내 데이터베이스에서 이름이 작은 따옴표가 아닌 아포스트로피 문자를 사용하여 저장되기 때문에이 문제가 발생합니다.이 새 데이터로 업데이트를 수행 할 때 이름에 데이터베이스에 아포스트로피가 있기 때문에 이름이 일치하지 않습니다. 번역 된 xml 파일을 읽는 Java 업데이트 코드에는 작은 따옴표가 있습니다.'의 문제점이 'xlst로 처리 할 때
원본 파일이 (이름 요소의 음표 값)과 같이 카드 요소의 다양한 목록이 있습니다
<card>
<cost>4BB</cost>
<color>Black</color>
<expansion-set>
<rarity>R</rarity>
<abbreviation>UD</abbreviation>
</expansion-set>
<type>Enchantment</type>
<ruling>Vintage tournaments (see Rule 901) have restricted this
card since 1999/10/01.</ruling>
<ruling>Legacy tournaments (see Rule 902) have banned this card
since 1999/10/01.</ruling>
<ruling>Extended tournaments (see Rule 903) have banned this
card since 1999/08/01.</ruling>
<note>Note - Also see Skip, Rule G19.11.</note>
<text>Text(UD): Skip your draw step. ; Pay 1 life: Draw a card.</text>
<name>Yawgmoth's Bargain</name>
</card>
XSLT 템플릿 카드 요소를 일치 내가 찾고 있어요 새로운 양식을 만들 것을이 : 당신은 내가 원하는 부분 만 모든 것을 통해 전송하고 있지 않다 내가 속성에 이름 요소를 돌리겠다 볼 수 있듯이
<xsl:template match="card">
<card name="{name}">
<!-- Add the card name -->
<!-- <xsl:attribute name="name">
<xsl:value-of select="name"/>
</xsl:attribute>
<cardname><xsl:value-of select="name"/></cardname> -->
<!-- Add the card's rulings -->
<xsl:apply-templates select="ruling"/>
<!-- Add the card's notes -->
<xsl:apply-templates select="note"/>
</card>
</xsl:template>
(나는 요소로 이름을 유지하려했지만 같은 문제를 볼 수있다) . 주석 처리 된 부분은 내가 원하는 출력 (현재 변환 및 모든 결과를 작은 따옴표를 아포스트로피가 아닌 동일한 용도로 주석 처리 한 것)를 얻으려고 시도한 다른 시도입니다. 여기
가 (이름 속성의 다른 값을 유의) 카드 요소가 번역 출력의 모습입니다 : 이제 (자바로 작성된) 내 데이터베이스 업데이트 코드가 XML에 읽을 때
<card name="Yawgmoth's Bargain">
<ruling ruleref="901">Vintage tournaments (see Rule 901) have restricted this card since 1999/10/01.</ruling>
<ruling ruleref="902">Legacy tournaments (see Rule 902) have banned this card since 1999/10/01.</ruling>
<ruling ruleref="903">Extended tournaments (see Rule 903) have banned this card since 1999/08/01.</ruling>
<note ruleref="G19.11">Note - Also see Skip, Rule G19.11.</note>
</card>
, Yawgmoth의 Bargain에는 문자열에 작은 따옴표 문자가 있지만 내가 만든 데이터베이스에는 아포스트로피 문자를 사용하는 이름이 있습니다. 말할 필요도없이 내 업데이트 코드가 카드 이름과 일치하지 않습니다.
xsl 변환에서 이러한 충실도가 저하되는 이유는 무엇입니까?
감사, XML에
이안
그래, 맞아. 이 경우 "다른 것"은 내 자신의 코드였습니다. 이 프로젝트에서 SQL 용 문자열을 이스케이프하기 위해 일부 유틸리티 클래스를 재사용했습니다. 이 코드에는 작은 따옴표를 올바른 작은 따옴표로 "스마트 화"하는 옵션이 있습니다. 재사용이 적절 함 ;-) 실제로 진행되고있는 작업을 알았으므로 이제는 똑같은 스마트 카드 작업을 수행하기 위해 업데이트 코드를 조정하고 모두 잘 수행 할 것입니다. –