2011-11-01 3 views
0

xsl 파일에 대한 입력으로 XML 파일이 있습니다. 내가 xsl의 outputmethod를 xml로 지정하고 xsl : element를 사용하여 요소를 정의하거나 다른 스레드에서 말한 것처럼 xml의 요소와 일치시킬 때 나는 어떤 태그도 얻지 못한다. 나는 xml의 텍스트 만 얻는다. 나는 가지고있다. 다양한 예를 시도했다. 내가 뭘 시도했는지는 XML의 텍스트 부분 만 얻고있다. xsl을 사용하여 하나의 xml을 다른 xml로 변환하는 완전한 작업 코드가 들어있는 간단한 예제를 제공 할 수 있습니까?xslt를 사용하여 XML을 재구성하면 텍스트 만 표시됩니다.

샘플을 게시하지 않으셔서 죄송합니다.

1) 동일한 폴더에 XSL 및 XML 파일을 갖고 아래와 같은 XML인가된다 browser.The의 XSL 파일을 사용하여 XML을 개폐 :

나는 두 가지 XML의 재구성을 시도했다.

test.xml의 :

<?xml version="1.0" encoding="ISO-8859-1"?> 
<?xml-stylesheet type="text/xsl" href="sample.xsl"?> 
<root> 
<info> 
    <firstname>Bob</firstname> 
    <lastname>Joe</lastname> 
</info> 
<notes> 
    <note>text1</note> 
    <note>text2</note> 
</notes> 
<othernotes> 
    <note>text3</note> 
    <note>text4</note> 
</othernotes> 
</root> 

sample.xsl

<?xml version="1.0" encoding="ISO-8859-1"?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:template match="root"> 
    <root> 
    <xsl:copy-of select="info"/> 
    <notes> 
     <xsl:copy-of select="othernotes"/> 
    </notes> 
    </root> 
</xsl:template> 
</xsl:stylesheet> 

출력 : 밥 조 모두 파일

이 같은 폴더에있는 텍스트 3 텍스트 4 그리고 내가 xml 파일을 열었습니다. 출력을 보려면 브라우저를 부릅니다.

2) 내 프로젝트에서 xslt와 함께 struts 프레임 워크를 사용하고 있습니다. 보기로 설정된 XML은 다음과 같습니다. XML :

<root> 
<data> 
<array-list> 
<array-list xsi:type="java:java.util.ArrayList"> 
<slot-info-object avail-crit-thresh="-1.0" avail-fif-min="-1.0" avail-five-min="-1.0" avail-one-day="0.0" avail-one-hr="-1.0" avail-warn-thresh="-1.0" freeslot="0" keyn-service-subtype-id="9" perf-crit-thresh="-1.0" perf-fif-min="-1.0" perf-five-min="-1.0" perf-one-day="0.0" perf-one-hr="-1.0" perf-warn-thresh="-1.0" severity-type="0" shared-script-id="-1" slot-id="671457" trans-id="733299" user-id="0" xsi:type="java:com.keynote.mykeynote.service.dashboard.SlotInfoObject"> 
<slot-alias>Single slot</slot-alias> 
</slot-info-object> 
<slot-info-object avail-crit-thresh="-1.0" avail-fif-min="1.0" avail-five-min="1.0" avail-one-day="1.0" avail-one-hr="1.0" avail-warn-thresh="-1.0" freeslot="0" keyn-service-subtype-id="9" perf-crit-thresh="-1.0" perf-fif-min="0.5105" perf-five-min="0.529" perf-one-day="0.6195208333333333" perf-one-hr="0.5505" perf-warn-thresh="-1.0" severity-type="0" shared-script-id="595" slot-id="685397" trans-id="-7105" user-id="0"> 
<slot-alias>SharedSlot</slot-alias> 
</slot-info-object> 
</array-list> 
</array-list> 
</data> 
</root> 

뷰는 다음 코드가 들어있는 XSL 파일입니다 XSL 파일 :

<?xml version="1.0" encoding="ISO-8859-1"?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 

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

<xsl:template match="/root/data/array-list/array-list"> 
<root> 
<slot-info-object> 
    <xsl:for-each select="slot-info-object"> 
    <xsl:copy-of select="slot-alias"/>  
    </xsl:for-each> 
</slot-info-object> 
</root> 
</xsl:template> 

</xsl:stylesheet> 

출력 : 단일 slotSharedSlot

하나 더 질문 : request.setAttribut e (StrutsCXConstants.XML_KEY, data); 여기서 data는 ArrayList와 같은 Java 컬렉션입니다. 이 줄은 struts Action 파일에 기록됩니다. 이것은 뷰의 XML로만 변환됩니다. 은 우리가 XSL

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

에서 이런 말을하는 경우는 Struts 액션 클래스의 응답 유형이 "텍스트/XML"

감사를 설정해야한다.

+0

a) .xml 입력을 제공하고, b) 현재 .xslt 또는 샘플을 제공 한 경우 도움이 될 수 있습니다. – FailedDev

+0

XML (또는 추출물), 스타일 시트 및 결과 출력 (또는 추출)을 입력하여 보여줄 수 있습니까? 무엇이 잘못되었는지보기 위해 적어도 스타일 시트가 필요합니다. –

+1

내가하는 일은 비가 내릴 뿐이다. 화창한 날씨를 완벽하게 구현 한 간단한 예를 들어 주시겠습니까? –

답변

0

내 두 번째 경우에는 자바 작업 클래스에서 xml에 응답 유형을 설정하지 않았기 때문에 텍스트가 있습니다. 일단 내가 설정하면 xsl은 내 자신의 사용자 정의 태그와 xsl에 보낸 xml 태그를 표시합니다.

첫 번째 경우에 대해 Dimitre Novatchev는 다음 링크에서 설명한 것과 같은 명령을 사용해야한다고 말했습니다. http://www.biglist.com/lists/xsl-list/archives/199912/msg00082.html

감사합니다.

4

가능성은 템플릿 규칙 중 원본과 일치하는 것이 없기 때문에 가능성이 있습니다. 이는 XML이 네임 스페이스에 있다는 사실 때문입니다. 저기 - 코드의 한 줄을 보지 않고 스타일 시트를 디버깅했습니다. 감동 받았으면 좋겠어요. 코드를 보여 주면 얼마나 쉬울 지 생각해보십시오.

+0

+1 검은 유머에 대한 :) – FailedDev

0

설명 :

은 무엇 브라우저에서 보는 것은 어떤 HTML이 아닌되게 브라우저가 표시됩니다.

솔루션 : 다음의

하나 :

  1. 파일에 저장 (변환을 수행하는 브라우저를 사용하지만, 다른 방법으로 그것을 호출하지 않는에서 출력 - 명령 줄에서 말하십시오.) 그런 다음 일반 텍스트 편집기로이 파일을보십시오.

  2. 브라우저에 표시하려는 HTML 요소를 XSLT 코드에 추가하십시오.

0

XSL 코드에는 루트 노드 "/"에 대한 템플릿이 없으므로 중첩 태그 생성을위한 시작점이 없습니다. 템플릿 요소를

<xsl:template match="/root"> 

으로 변경하면 일부 출력이 표시됩니다.

관련 문제