1

以下のような xml があり、同じノードの下にすべての属性を出力する方法を知りたいです。

 <?xml version="1.0" encoding="utf-8"?>
   <Person ID="1234">
      <NAME>Louis  //</NAME>
      <SEX>M</SEX>
      <BIRT>
         <DATE>15 SEP 1980</DATE>
         <PLAC>UK</PLAC>
      </BIRT>
      <FAMS REF="F523"/>
      <FAMS REF="F524"/>
      <FAMC REF="F521"/>
   </INDI>

そして、以下のように FAMS と FAMC を出力したい: FAMS: F523, F524 FAMC: F521

ありがとう、ローレンス

4

3 に答える 3

1

この変換:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output method="text"/>

 <xsl:template match="/*">
  <xsl:apply-templates select="FAMS[1]"/>
  <xsl:apply-templates select="FAMC[1]"/>
 </xsl:template>

 <xsl:template match="FAMS|FAMC">
  <xsl:value-of select="name()"/>: <xsl:text/>
  <xsl:apply-templates select="../*[name()=name(current())]/@REF"/>
  <xsl:text>&#xA;</xsl:text>
 </xsl:template>

 <xsl:template match="@REF">
  <xsl:if test="not(position() =1)">, </xsl:if>
  <xsl:value-of select="."/>
 </xsl:template>
</xsl:stylesheet>

提供された (整形式になるように修正された) XML ドキュメントに適用すると、次のようになります。

<Person ID="1234">
    <NAME>Louis  //</NAME>
    <SEX>M</SEX>
    <BIRT>
        <DATE>15 SEP 1980</DATE>
        <PLAC>UK</PLAC>
    </BIRT>
    <FAMS REF="F523"/>
    <FAMS REF="F524"/>
    <FAMC REF="F521"/>
</Person>

必要な正しい結果が生成されます。

FAMS: F523, F524
FAMC: F521
于 2013-03-31T16:05:07.620 に答える
0

要素のすべての属性に一致する XPathxは ですx/@*。または、現在の (コンテキスト) ノードの XPath は です@*

于 2013-03-31T11:39:13.860 に答える
0

パスはFAMS/@REF次のとおりです。

<xsl:template match="Person">
  <xsl:apply-templates select="FAMS/@REF"/>
</xsl:template>

<xsl:template match="FAMS/@REF">
  <xsl:if test="position() &gt; 1">, </xsl:if>
  <xsl:value-of select="concat('FAMS> ', .)"/>
</xsl:template>
于 2013-03-31T11:42:07.847 に答える