문제

내가 사용하는 xslt2.0xml 데이터를 변환하여 xml 파일이 있습니다.내가 만들어 xsl 를 찾는 모든 파일 폴더에서는:

filenames.xml

<?xml version="1.0" encoding="UTF-8"?>
<filelist>
   <file>birds2014.xml</file>
   <file>birds2013.xml</file>
</filelist>

그럼 내가 만들어 xsl 을 검색에 xml 파일을 선택하려면 모든 이름의 조류에 위치하는 태그 <spbird> 모든 문서입니다.

    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:xs="http://www.w3.org/2001/XMLSchema" exclude-result-prefixes="xs" version="2.0">
    <xsl:output omit-xml-declaration="yes" indent="yes"/>
    <xsl:strip-space elements="*"/>

<xsl:template match="*">
        <xsl:apply-templates/> 
        <xsl:variable name="files" select="document('filelist.xml')/filelist/file"/>
            <xsl:element name="birdname">
                <xsl:for-each select="document($files)">    
                    <xsl:value-of select="//spbird">
                    </xsl:value-of>
                </xsl:for-each>
            </xsl:element>  
    </xsl:template>

결과:

<birdname>Papagei Wellensittich Pfau</birdname>
<birdname>Papagei Wellensittich Pfau</birdname>
<birdname>Papagei Wellensittich Pfau</birdname>
<birdname>Papagei Wellensittich Pfau</birdname>
<birdname>Papagei Wellensittich Pfau</birdname>
<birdname>Papagei Wellensittich Pfau</birdname>
<birdname>Papagei Wellensittich Pfau</birdname>
<birdname>Papagei Wellensittich Pfau</birdname>
<birdname>Papagei Wellensittich Pfau</birdname>

예:

<birdname>Papagei</birdname>
<birdname>Wellensittich</birdname>
<birdname>Pfau</birdname>

사람이 도움이 될 수 있습니다?

편집 를 변경했는데도

 <xsl:template match="*">

하기

   <xsl:template match="/">

는 문제를 해결합의와 같은 결과를 보여주는 9 번(어디서 이번호에서 왔).

지금 당신의 도움으로 결과는:

<birdname>Papagei Wellensittich</birdname>
<birdname>Pfau</birdname>

Pfau 은 조류에서 두 번째 xml 파일입니다.만 문제가 해당 문서()을 위해 각각 자신의에서.그래서 나는 모든 새들은 별도로에서 birdname 태그..

    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:xs="http://www.w3.org/2001/XMLSchema" exclude-result-prefixes="xs" version="2.0">
    <xsl:output omit-xml-declaration="yes" indent="yes"/>
    <xsl:strip-space elements="*"/>

<xsl:template match="*">
        <xsl:apply-templates/> 
        <xsl:variable name="files" select="document('filelist.xml')/filelist/file"/>

                <xsl:for-each select="document($files)">   
                       <birdname> 
                         <xsl:value-of select="//spbird">
                       </birdname>
                    </xsl:value-of>
                </xsl:for-each>
            </xsl:element>  
    </xsl:template>
도움이 되었습니까?

해결책

도를 넣어 요소의 내부는 xsl:for-each...

<xsl:for-each select="document($files)">    
    <birdname>
        <xsl:value-of select="//spbird"/>            
    </birdname>
</xsl:for-each>

참고:지 않는 한 당신은 노력하는 동적으로 구축 요소의 이름이 없을 사용하는 이유 xsl:element.

편집

XSLT2.0, xsl:value-of 을 줄 것이다 당신은 모든 값의 spbird.대 xsl:for-each 문서에는 작업을 수행해야 합니다에 대한 각-에 spbird.를 변경해 보세요 xsl:for-each 아래 예제.이 작동하지 않는 경우,추가하십시오의를 새로 파일을 귀하의 질문입니다.

<xsl:for-each select="document($files)//spbird">    
    <birdname>
        <xsl:value-of select="."/>            
    </birdname>
</xsl:for-each>
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top