2012-05-24 4 views
0

HTML을 생성하기 위해 XSLT를 사용하여 XML을 단순 변환하려고하지만 어려움을 겪고 있으며 문제가 무엇인지 파악할 수 없습니다.xslt에서 xml을 출력하여 HTML을 출력하는 문제

<?xml version="1.0" encoding="UTF-8"?> 
<?xml-stylesheet type="text/xsl" href="C:\Users\cgubata\Documents\Digital Measures\jcamp_fac_ex_xslt.xsl"?> 
<Data xmlns="http://www.digitalmeasures.com/schema/data" xmlns:dmd="http://www.digitalmeasures.com/schema/data-metadata" dmd:date="2012-02-27"> 
<Record userId="310106" username="jcamp" termId="453" dmd:surveyId="1154523"> 
    <dmd:IndexEntry indexKey="COLLEGE" entryKey="School of Business" text="School of Business"/> 
    <dmd:IndexEntry indexKey="DEPARTMENT" entryKey="Accountancy" text="Accountancy"/> 
    <dmd:IndexEntry indexKey="DEPARTMENT" entryKey="MBA" text="MBA"/> 
    <PCI id="11454808064" dmd:lastModified="2012-02-08T13:17:39"> 
     <PREFIX>Dr.</PREFIX> 
     <FNAME>Julia</FNAME> 
     <PFNAME/> 
     <MNAME>M.</MNAME> 
     <LNAME>Camp</LNAME> 
     <SUFFIX/> 
     <ALT_NAME>Julia M. Brennan</ALT_NAME> 
     <ENDPOS/> 

내가하고 싶은 모든 노드의 일부 HTML에 표시 할 값을 가질 수 있습니다 : 여기에 내가 작업하고있는 XML의 샘플입니다. 예를 들어 PREFIC, FNAME, LNAME 노드가 "Dr. Julia Camp"로 표시되도록 할 수 있습니다 (따옴표 없음 - 나중에 스타일을 지정합니다). 다음은 내가 사용하고있는 XSL입니다.

<?xml version="1.0" encoding="utf-8"?><!-- DWXMLSource="jcamp_fac_ex.xml" --> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:dmd="http://www.digitalmeasures.com/schema/data-metadata"> 
<xsl:output method="html" encoding="utf-8"/> 
<xsl:template match="/"> 

<xsl:value-of select="/Data/Record/PCI/PREFIX"/> 

</xsl:template> 
</xsl:stylesheet> 

내가 연구 한 내용에서 PREFIX 필드의 값을 보여 주어야합니다. 그러나 대신 모든 노드의 모든 값을 출력합니다 (따라서 텍스트 값이 4000 노드 인 경우 HTML로 4000 값이 반환됩니다). 내 목표는 특정 노드에서 값을 뽑아내는 것이고 아마도 테이블에 배열 할 것입니다.

특정 노드의 값을 어떻게 제거합니까? 미리 감사드립니다.

+0

인터넷 (Bing)에서 "XPath 기본 네임 스페이스"를 검색하십시오. 유익한 결과가 수백 개 있어야합니다. –

답변

1

글쎄, 증상을 재현 할 수 없습니다. 게시 한 내용을 테스트 할 때 출력이 전혀 생성되지 않습니다. 귀하의 xpath가 잘못된 네임 스페이스를 테스트하고 있기 때문에 올바른 것으로 보입니다. http://www.digitalmeasures.com/schema/data 네임 스페이스에 대한 네임 스페이스 - 접두사 매핑을 xslt에 추가 한 다음 value-of xpath에 사용해야합니다. 이 같은 :

<?xml version="1.0" encoding="utf-8"?> 
<xsl:stylesheet version="1.0" 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    xmlns:dmd="http://www.digitalmeasures.com/schema/data-metadata" 
    xmlns:dm="http://www.digitalmeasures.com/schema/data"> 
    <xsl:output method="html" encoding="utf-8"/> 
    <xsl:template match="/"> 
     <xsl:value-of select="/dm:Data/dm:Record/dm:PCI/dm:PREFIX"/> 
    </xsl:template> 
</xsl:stylesheet> 
+0

정말 고마워요! 내가 뭔가를 놓친다는 것을 알았고 스키마에 네임 스페이스 접두사를 추가하는 것이 트릭을 만들었습니다. 다시 한 번 감사드립니다! – Chris

1

초보자를위한 최고의 XSLT 함정에 빠졌는지 두려워 :이 포럼에서 적어도 한 번이 질문을 참조하십시오. 요소가 네임 스페이스에 있고 스타일 시트가 네임 스페이스가없는 노드를 일치 시키려고합니다.

+0

OP가 초점을 맞출 곳을 이해할 수 있도록 좀 더 구체적인 지침을 제공하십시오. – ABach

+0

좋은 제안. 이 포럼에는이 환자에게 전에 묻지 않은 것처럼이 질문에 인내심있게 대답 할 환자가 있습니다. 나는 그들 중 하나가 아니기를 두려워한다. 그러나 나는 사람들이 Google에 할 수있는 몇몇 수색 기간을 제공해서 도움이되는 것을 아직도 시도한다. –

관련 문제