Php 从xml中获取所有子属性值
这是我的简单xml文件:-Php 从xml中获取所有子属性值,php,javascript,xslt,xpath,Php,Javascript,Xslt,Xpath,这是我的简单xml文件:- <child_2 entity_id="2" value="Root" parent_id="1"> <child_4 entity_id="4" value="Activities" parent_id="2"> <child_10066 entity_id="10066" value="Physical1" parent_id="4"> <child_10067 entity
<child_2 entity_id="2" value="Root" parent_id="1">
<child_4 entity_id="4" value="Activities" parent_id="2">
<child_10066 entity_id="10066" value="Physical1" parent_id="4">
<child_10067 entity_id="10067" value="Cricket" parent_id="10066">
<child_10068 entity_id="10068" value="One Day" parent_id="10067"/>
</child_10067>
</child_10066>
<child_10069 entity_id="10069" value="Test2" parent_id="4"/>
<child_10070 entity_id="10070" value="Test3" parent_id="4"/>
<child_10071 entity_id="10071" value="Test4" parent_id="4"/>
<child_10072 entity_id="10072" value="Test5" parent_id="4"/>
<child_5 entity_id="5" value="Physical" parent_id="4"/>
</child_4>
</child_2>
感谢获取
@entity\u id
属性值为$region
的元素的每个后代的@entity\u id
属性值:
样式表
您需要显示给定XML的实际输出应该是什么样子。XML是一种奇怪的结构,元素的ID连接在标记名中,在本例中,我看不到任何好处,因为您将ID作为属性。@MrCode我更新了我的问题,请检查我正在添加我的xslt文件……您的意思是要获取
@entity\u ID
值为“4”(或$region
)的每个元素的@entity\u ID
属性值吗?@EeroHelenius是的每个值都有parent\u id=4
我想要这里是1006710068我想要他们所有的@parent\u id
属性值不是“4”。哦,我知道但想要孩子的所有子值。好的,编辑了我的答案。这次我理解对了吗?
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" encoding="UTF-8"/>
<xsl:key name="kChild" match="*[@entity_id]" use="../@entity_id"/>
<xsl:param name="region" select="'4'" />
<xsl:template match="/">
<xsl:apply-templates select="key('kChild', $region)" />
</xsl:template>
<xsl:template match="*">
<xsl:value-of select="@entity_id"/>
<xsl:text>,</xsl:text>
</xsl:template>
</xsl:stylesheet>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" encoding="UTF-8"/>
<xsl:param name="region" select="'4'"/>
<xsl:template match="/">
<xsl:apply-templates select="*/*[@entity_id = $region]//*"/>
</xsl:template>
<xsl:template match="*">
<xsl:value-of select="@entity_id"/>
<!-- Don't add comma after last number -->
<xsl:if test="not(position() = last())">
<xsl:text>,</xsl:text>
</xsl:if>
</xsl:template>
</xsl:stylesheet>
<child_2 entity_id="2" value="Root" parent_id="1">
<child_4 entity_id="4" value="Activities" parent_id="2">
<child_10066 entity_id="10066" value="Physical1" parent_id="4">
<child_10067 entity_id="10067" value="Cricket" parent_id="10066">
<child_10068 entity_id="10068" value="One Day" parent_id="10067"/>
</child_10067>
</child_10066>
<child_10069 entity_id="10069" value="Test2" parent_id="4"/>
<child_10070 entity_id="10070" value="Test3" parent_id="4"/>
<child_10071 entity_id="10071" value="Test4" parent_id="4"/>
<child_10072 entity_id="10072" value="Test5" parent_id="4"/>
<child_5 entity_id="5" value="Physical" parent_id="4"/>
</child_4>
</child_2>
10066,10067,10068,10069,10070,10071,10072,5