문제
내가 사용하는 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>
제휴하지 않습니다 StackOverflow