Fragmenting XML Documents via Structural Constraints

合集下载

document.xml语法

document.xml语法

XML (可扩展标记语言) 是一种用于标记电子文档结构和内容的语言。

它被广泛应用于各种领域,例如网页设计、文档管理、数据交换等。

而document.xml则是XML语言中的一个重要概念,它在各种领域中都有着重要的作用。

本文将介绍document.xml语法的基本概念和用法,帮助读者更好地理解和应用这一重要的技术。

一、document.xml的概念document.xml是一种XML文件,用于描述文档的结构和内容。

它由一系列标签(tag)和数据(data)组成,可以用来表示各种类型的文档,如网页、电子书、报告等。

通过使用document.xml,用户可以轻松地创建、编辑和管理各种类型的文档。

二、document.xml的基本语法1. 标签在XML中,标签是用来表示文档结构的基本元素。

一个标签由开始标记和结束标记组成,如<book>和</book>。

开始标记用于表示标签的起始位置,结束标记用于表示标签的结束位置。

标签还可以包含属性,用来描述标签的附加信息,如<book id="001">表示具有id属性的book标签。

2. 数据在XML中,数据是标签中的内容,用来表示文档的具体信息。

数据可以是文本、数字、图像等形式的信息,它们被包含在开始标签和结束标签之间。

在<book>标签中可以包含书名、作者、出版日期等信息。

3. 注释在XML中,注释用来对文档进行解释和说明。

注释以<!--开始,以-->结束,可以插入到标签之间或者标签外部,用来提供关于文档内容和结构的补充信息。

三、document.xml的应用1. 网页设计在网页设计中,document.xml可以用于描述网页的结构和内容。

通过使用document.xml,可以将网页的各个元素(如标题、段落、图像等)以结构化的方式表示出来,从而更好地组织和管理网页的内容。

2. 文档管理在文档管理系统中,document.xml可以用来表示和存储各种类型的文档,如报告、合同、说明书等。

fragement详解

fragement详解

fragement详解Fragment(片段)是编程中的一个概念,指的是在Android开发中可以独立存在的模块化组件。

相较于Activity(活动),Fragment有更好的灵活性、可重用性和扩展性。

本文将详细解释Fragment的定义、使用方法、生命周期、与Activity的关系等内容,以帮助读者深入了解Fragment的优点和实践。

第一部分:Fragment定义和使用方法一、Fragment定义Fragment是Android提供的一种用户界面组件,可以嵌入到Activity中进行布局和交互。

每个Fragment都有自己的生命周期,可以独立接收用户输入、响应事件、更新UI等。

Fragment可以看作是一种轻量级的Activity,但与Activity不同的是,Fragment必须依附于一个Activity才能使用。

二、Fragment使用方法要在项目中使用Fragment,首先需要确保你的项目使用了适当的版本和依赖库。

在Android Studio中,可以在build.gradle 文件中添加以下代码来引入Fragment支持:```implementation 'androidx.fragment:fragment:1.3.0'```然后,在XML布局文件中定义Fragment的容器。

在Activity 中可以添加一个`<FrameLayout>`元素作为容器,如下所示:```<FrameLayoutandroid:id="@+id/fragment_container"android:layout_width="match_parent"android:layout_height="match_parent" />```接着,在Activity中实例化一个Fragment对象,并将其添加到容器中。

列举xml的文档结构

列举xml的文档结构

列举xml的文档结构XML(可扩展标记语言)是一种用于存储和传输结构化数据的标记语言,它具有自描述性和扩展性,被广泛应用于各种领域,例如Web应用程序、数据库系统和电子商务等。

XML文档结构由各种元素和标记组成,下面将列举和描述XML文档结构的相关参考内容。

1. XML声明(XML Declaration):XML声明是XML文档的开头,用于指定XML版本和使用的字符编码。

它以`<?xml version="1.0" encoding="UTF-8"?>`的格式出现,其中`version`属性指定XML版本,`encoding`属性指定字符编码。

2. 根元素(Root Element):XML文档的根元素是所有其他元素的父元素。

它是XML文档的顶层元素,包含整个文档的内容。

3. 元素(Element):XML文档中的元素是最基本的构建块,用于表示数据或信息。

元素由开始标签和结束标签组成,之间包含文本、子元素或属性等。

4. 属性(Attribute):XML元素可以具有属性,用于提供关于该元素的额外信息。

属性位于元素的开始标签中,由名称和值组成,中间使用等号连接。

5. 文本(Text):XML文档中的文本表示实际的数据或信息。

文本出现在元素的开始标签和结束标签之间,可以包含任意字符,包括空白字符和特殊字符。

6. 注释(Comment):XML文档中的注释用于添加对文档的解释或说明。

注释以`<!--`开头,以`-->`结尾,它们不会被解析器处理。

7. CDATA段(CDATA Section):CDATA段用于包含特殊字符和标记,它不会被解析器解析。

CDATA段以`<![CDATA[`开头,以`]]>`结尾,其中的内容作为原始文本处理。

8. 命名空间(Namespace):XML文档中的命名空间用于避免元素和属性名称的冲突。

java中fragment概念

java中fragment概念

Java中的Fragment是Android开发中常见的概念,在实现复杂的界面和交互逻辑时发挥着重要作用。

本文将介绍Java中Fragment的概念、用法和实际应用,帮助读者更好地理解和运用Fragment进行Android开发。

一、Fragment的概念Fragment是Android系统提供的一种模块化组件,用于构建灵活且可复用的界面。

它可以看作是Activity中的一部分,每个Activity可以包含多个Fragment,从而实现更灵活的界面布局和交互逻辑。

Fragment可以独立存在,也可以嵌入到其他Activity中使用,使得应用程序的界面更加灵活多样。

二、Fragment的用法1. 创建Fragment在Java中创建Fragment通常需要继承自android.support.v4.app.Fragment类,并实现其onCreateView方法来设置Fragment的布局和界面元素。

通过FragmentManager可以在Activity中动态添加、替换、删除Fragment,从而实现灵活的界面管理和切换。

2. 生命周期管理Fragment有自己的生命周期,包括onCreate、onCreateView、onActivityCreated、onStart、onResume等方法,开发者可以通过重写这些方法来管理Fragment的生命周期和界面状态,实现复杂的界面交互和逻辑处理。

3. 通信与交互Fragment可以通过Activity的实例来获取上下文和数据,也可以通过FragmentManager来获取其他Fragment的实例,从而实现不同Fragment之间的通信和交互。

这种方式可以实现复杂的界面联动和数据共享,使得应用的交互更加灵活多样。

三、Fragment的实际应用1. 实现复杂的界面通过将界面拆分成多个Fragment,可以更好地管理界面布局和交互逻辑,减少代码的复杂度和耦合度,提高代码的可维护性和复用性。

xml结构描述文件

xml结构描述文件

xml结构描述文件XML(可扩展标记语言)是一种用于描述数据结构和数据的文本格式。

它具有易于阅读、易于编写和易于解析的特点,因此在许多领域得到了广泛的应用。

下面将详细介绍XML结构描述文件的相关知识。

1.XML结构简介XML是基于XML规范的一种树状结构。

它由一系列的元素组成,每个元素包括开始标签、结束标签和中间的内容。

XML文件由一个根元素开始,然后分为多个子元素,子元素也可以分为多个孙元素。

这种层次结构使得XML具有良好的可读性和易于理解。

2.XML的基本语法XML的基本语法包括以下几点:- 开始标签:每个元素都以开始标签表示,例如```<element>```。

- 结束标签:每个元素都以结束标签表示,例如```</element>```。

两个斜杠(```/```)表示结束标签。

- 空格:XML元素可以包含空格,以提高可读性。

- 注释:XML允许在元素中添加注释,以提供对代码的说明。

注释以```<!--```开始,以```-->```结束。

- CDATA段:CDATA段用于包含不解析的特殊字符,以避免XML解析器将其解析为标签或属性。

CDATA段以```<![CDATA[```开始,以```]]>```结束。

3.XML的应用场景XML广泛应用于以下场景:- 数据存储:XML文件可以用于存储结构化数据,便于数据的备份和传输。

- 数据交换:XML具有良好的可读性和易于解析性,可用于不同系统之间的数据交换。

- 配置文件:许多软件使用XML文件作为配置文件,以便于用户自定义设置。

- 文档编写:XML可应用于文档编写,如使用TEI(Text Encoding Initiative)规范对文本进行编码。

4.XML的优势与局限性XML的优势:- 结构清晰:XML采用树状结构,使数据层次关系一目了然。

- 易于阅读和编写:XML采用类似于HTML的语法,易于阅读和编写。

fragment简介

fragment简介

1.Fragment作为Activity界面的一部分组成出现2.可以在一个Activity中同时出现多个Fragment,并且,一个Fragment亦可在多个Activity中使用。

3.在Activity运行过程中,可以添加、移除或者替换Fragment(add()、remove()、replace())4.Fragment可以响应自己的输入事件,并且有自己的生命周期,当然,它们的生命周期直接被其所属的宿主activity的生命周期影响。

设计哲学Android在3.0中引入了fragments的概念,主要目的是用在大屏幕设备上--例如平板电脑上,支持更加动态和灵活的UI设计。

平板电脑的屏幕要比手机的大得多,有更多的空间来放更多的UI组件,并且这些组件之间会产生更多的交互。

Fragment允许这样的一种设计,而不需要你亲自来管理viewhierarchy的复杂变化。

通过将activity的布局分散到fragment中, 你可以在运行时修改activity的外观,并在由activity管理的back stack中保存那些变化.(/guide/topics/fundamentals/fragments.html)例如, 一个新闻应用可以在屏幕左侧使用一个fragment来展示一个文章的列表,然后在屏幕右侧使用另一个fragment来展示一篇文章--2个fragment并排显示在相同的一个activity中,并且每一个fragment拥有它自己的一套生命周期回调方法,并且处理它们自己的用户输入事件。

因此, 取代使用一个activity来选择一篇文章而另一个activity来阅读文章的方式,用户可以在同一个activity中选择一篇文章并且阅读, 如图所示:fragment在你的应用中应当是一个模块化和可重用的组件.即,因为fragment定义了它自己的布局, 以及通过使用它自己的生命周期回调方法定义了它自己的行为,你可以将fragment包含到多个activity中. 这点特别重要, 因为这允许你将你的用户体验适配到不同的屏幕尺寸.举个例子,你可能会仅当在屏幕尺寸足够大时,在一个activity中包含多个fragment,并且,当不属于这种情况时,会启动另一个单独的,使用不同fragment的activity. 继续之前那个新闻的例子-- 当运行在一个特别大的屏幕时(例如平板电脑),应用可以在Activity A中嵌入2个fragment。

fragment 用法

fragment 用法

Fragment在Android开发中具有重要地位,它表示Activity中的行为或界面的一部分,可以在一个Activity中组合多个Fragment,构建多窗格界面,并在多个Activity中重复使用某个Fragment。

Fragment必须始终托管在Activity中,其生命周期直接受宿主Activity生命周期的影响。

例如,当Activity暂停时,Activity的所有Fragment也会暂停;当Activity被销毁时,所有Fragment也会被销毁。

不过,当Activity正在运行时(处于已恢复生命周期状态),可以独立操纵每个Fragment,如添加或移除Fragment。

当执行此类Fragment事务时,也可将其添加到由Activity管理的返回栈中——Activity中的每个返回栈条目都是一条已发生Fragment事务的记录。

借助返回栈,用户可以通过按返回按钮撤消Fragment事务(后退)。

在实现上,Fragment类包含与Activity类似的回调方法,如onCreate()、onStart()、onPause()和onStop()。

通常至少应实现以下生命周期方法:onCreate()系统会在创建Fragment时调用此方法。

当Fragment经历暂停或停止状态继而恢复后,如果希望保留此Fragment的基本组件,则应在实现中将其初始化。

onCreateView()系统会在Fragment首次绘制其界面时调用此方法。

如要为Fragment绘制界面,从此方法中返回的View必须是Fragment布局的根视图。

以上信息仅供参考,如有需要,建议查阅Android开发相关文档或咨询专业开发人员。

fragmentmanager 原理

fragmentmanager 原理

fragmentmanager 原理FragmentManager是Android开发中非常重要的一个类,它用于管理 Activity 的 Fragment。

在本文中,我们将深入探讨FragmentManager 的原理,以便更好地理解它的使用方式。

FragmentManager 的作用:FragmentManager 主要负责管理Fragment 的生命周期,同时也处理与 Fragment 相关的事务,如添加、删除、替换等。

FragmentManager 与 Activity 之间的关系紧密,是 Activity 的重要组成部分。

FragmentManager 的实现方式:FragmentManager 是通过FragmentManagerImpl 实现的。

FragmentManagerImpl 实现了FragmentManager 接口,同时也持有一个 Activity 对象,用于管理该 Activity 中的 Fragment。

FragmentTransaction:FragmentTransaction 是用于处理Fragment 相关事务的类,例如添加、删除、替换等。

FragmentManager 通过 FragmentTransaction 来处理事务,同时也支持回退栈的操作。

回退栈:回退栈是 FragmentManager 中非常重要的一个概念,它可以让用户在返回前一个 Fragment 时,能够顺利地回到之前的状态。

FragmentManager 通过回退栈来管理 Fragment 的状态,而回退栈的实现方式是使用一个栈来存储 Fragment 的状态信息。

总结:FragmentManager 是 Android 中非常重要的一个类,它用于管理 Activity 的 Fragment。

FragmentManager 的实现方式是通过 FragmentManagerImpl 实现的,同时也支持回退栈的操作。

fragment用法详解

fragment用法详解

fragment用法详解一、Fragment简介Fragment是Android开发中一个重要的组件,它提供了一种在Activity或Fragment之间共享用户界面的方式。

Fragment可以独立地加载和更新,而不需要重新创建整个Activity或Fragment。

这使得Fragment在处理复杂的用户界面和交互时非常有用。

二、Fragment生命周期Fragment的生命周期与Activity相似,但也存在一些特殊之处。

Fragment的生命周期包括以下阶段:1. 创建阶段:当Fragment被添加到Activity中时,会进入创建阶段。

这个阶段包括Fragment的实例被创建,以及相关数据被初始化。

2. 活动阶段:Fragment与Activity一起活动,包括用户交互和更新等。

3. 销毁阶段:当Activity或Fragment不再需要时,会进入销毁阶段。

这个阶段包括Fragment的内部状态被保存,以及相关的资源被释放。

Fragment还提供了自己的生命周期回调方法,如onCreateView()和onDestroyView(),用于控制Fragment与视图树的交互。

下面是一个简单的Fragment用法示例:1. 在布局文件中添加Fragment元素:在布局文件中,可以使用<fragment>元素将Fragment添加到Activity中。

2. 在Activity中获取Fragment实例:在Activity中,可以使用getSupportFragmentManager()方法获取FragmentManager实例,然后使用findFragmentById()方法获取指定ID的Fragment实例。

3. 更新Fragment内容:可以使用setRetainInstance(true)方法保留Fragment实例,以便在Activity重新创建时保留Fragment的状态。

fragment basedialogfragment

fragment basedialogfragment

fragment basedialogfragment什么是FragmentFragment是Android中的一种UI组件,它可以嵌入到Activity中,允许我们在一个Activity中构建更加复杂和灵活的用户界面。

每个Fragment都有自己的布局和生命周期,可以独立地管理自己的用户界面和逻辑。

为什么使用Fragment使用Fragment有以下几个优势:1.复用性:Fragment可以在不同的Activity中重复使用,减少代码的冗余。

2.灵活性:Fragment可以动态地添加、移除和替换,使得界面的组合更加灵活。

3.适配性:Fragment可以根据屏幕的大小和方向进行适配,提供更好的用户体验。

DialogFragmentDialogFragment是Fragment的一个子类,通常用于显示对话框形式的界面。

它提供了一种简单的方式来显示和管理对话框,与普通的Dialog相比更加灵活和易用。

创建DialogFragment要创建一个DialogFragment,需要继承DialogFragment类,并实现onCreateDialog()方法。

在onCreateDialog()方法中,可以使用DialogBuilder来创建一个对话框,并返回给系统显示。

public class MyDialogFragment extends DialogFragment {@NonNull@Overridepublic Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());builder.setTitle("Dialog Title").setMessage("Dialog Message").setPositiveButton("OK", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {// 点击确定按钮的逻辑处理}}).setNegativeButton("Cancel", new DialogInterface.OnClickListen er() {@Overridepublic void onClick(DialogInterface dialog, int which) {// 点击取消按钮的逻辑处理}});return builder.create();}}显示DialogFragment要显示一个DialogFragment,可以使用FragmentManager的beginTransaction()方法开启一个事务,并调用show()方法显示对话框。

fragmentmanager的用法

fragmentmanager的用法

fragmentmanager的用法FragmentManager是Android提供的用于管理Fragment的类,它允许我们在Activity中添加、替换或移除Fragment,以及处理Fragment 的回退栈等操作。

下面是FragmentManager的一些常见用法:1. 获取FragmentManager实例FragmentManager的实例可以通过Activity的getFragmentManager(或者是getSupportFragmentManager(方法获取,取决于你是否使用了support库兼容低版本Android。

2. 开启一个Fragment事务要想对Fragment进行添加、替换或移除等操作,我们需要先开启一个Fragment事务。

事务可以通过调用FragmentManager的beginTransaction(方法来创建。

3. 添加Fragment要向Activity中添加一个Fragment,可以通过调用FragmentTransaction的add(方法,并传入要添加的Fragment对象,以及它在Activity中的布局容器的id。

例如:```FragmentTransaction transaction =fragmentManager.beginTransaction(;transaction.add(R.id.container, new MyFragment();```其中,R.id.container是Activity中的一个布局容器,用来容纳Fragment的视图。

4. 替换Fragment要替换Activity中的一个Fragment,可以通过调用FragmentTransaction的replace(方法来实现。

同添加Fragment一样,我们需要传入替换后的Fragment对象以及它的容器id。

例如:```FragmentTransaction transaction =fragmentManager.beginTransaction(;transaction.replace(R.id.container, new MyFragment();```5. 移除Fragment要从Activity中移除一个Fragment,可以通过调用FragmentTransaction的remove(方法来实现。

fragment简介

fragment简介

fragment简介
“Fragment”通常指的是一个不完整的部分或碎片。

在计算机科学领域,特指Android应用程序开发中的一种特定概念。

在Android开发中,Fragment是Activity界面的一部分,可以包含自己的布局和行为,并且可以被多个Activity共享或重复使用。

使用Fragment可以使得应用程序界面更加灵活,可以在不同的屏幕尺寸和设备上更好地适配。

另外,在Web开发中,"fragment"也可以指代URL中的一个片段标识符,用于指定网页中的特定位置。

在语言学和文学领域,“fragment”可以指代一个不完整的句子或段落,或者是一部分未完成的作品。

fragment的简单使用

fragment的简单使用

fragment的简单使用Fragment 是 Android 开发中用于实现碎片化布局的一种重要技术。

它允许您在活动中嵌入多个布局,并在运行时根据需要动态加载和显示它们。

通过使用 Fragment,您可以创建更加灵活和可维护的应用程序。

下面是使用 Fragment 的基本步骤:1. 创建一个新的 Fragment 类:```javapublic class MyFragment extends Fragment {// 实现 Fragment 的生命周期方法}```2. 在活动中添加 Fragment:```javapublic class MyActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);setContentView(yout.activity_main);if (savedInstanceState == null) {// 创建一个新的 Fragment 实例MyFragment myFragment = new MyFragment();// 将 Fragment 添加到活动中getSupportFragmentManager().beginTransaction().add(R.id.container, myFragment).commit();}}}```这里假设您已经创建了一个名为 `activity_main.xml` 的布局文件,其中包含一个容器视图(例如 `FrameLayout`),其 ID 为 `container`。

3. 在 Fragment 中加载布局:在 Fragment 的 `onCreateView()` 方法中,您可以加载一个布局文件并将其返回给活动中。

fragmentmanager 原理

fragmentmanager 原理

fragmentmanager 原理FragmentManager是Android系统中的一个重要组件,主要用于管理Fragment。

Fragment是Android中一种可以在Activity中嵌入的模块化组件,被广泛应用于多窗口界面和多页签界面的开发中。

在使用Fragment时,它们的生命周期和它们所在的Activity生命周期有着紧密的关联,因此需要借助FragmentManager来进行管理。

FragmentManager的主要原理是将Activity中的Fragment对象加入一个栈中,当需要显示Fragment时,从栈中取出该Fragment并将它显示出来。

Fragment栈是一个LIFO(Last In First Out,后进先出)的数据结构,即最后一个加入栈的Fragment会被最先显示出来。

在具体的实现中,FragmentManager主要有两种模式:add模式和replace模式。

在add模式下,每一个Fragment都会被加入栈中,如果需要显示下一个Fragment,那么就会把上一个Fragment遮盖住,从而实现多个Fragment的累加显示。

在replace模式下,每一个Fragment都会替换掉当前的Fragment,因此只有当前的Fragment才会被显示,实现了单个Fragment的替换显示。

在使用FragmentManager进行Fragment的管理时,需要关注一些重要的方法和属性。

其中最重要的是beginTransaction(),该方法用于开始一个新的Fragment事务,并把它加入BackStack中。

一旦开始了一个Fragment事务,就可以调用addToBackStack()方法将它加入BackStack中,在Fragment回退栈中建立一个新的条目,从而实现Fragment直接的快速切换。

另外,FragmentManager还提供了findFragmentById()和findFragmentByTag()方法,用于查找指定id或tag的Fragment对象,并返回该对象的实例。

fragmentsize和nomatchsize用法 -回复

fragmentsize和nomatchsize用法 -回复

fragmentsize和nomatchsize用法-回复首先,我们来了解什么是fragmentsize(片段大小)和nomatchsize(无匹配大小)。

这两个指标是在信息检索系统中使用的,用于优化搜索结果的呈现方式。

在信息检索系统中,当用户输入一个查询词,系统会返回一系列与查询词相关的文档。

然而,很多时候这些文档可能过长或者与用户的查询意图不完全匹配。

为了解决这个问题,信息检索系统会对文档进行分块处理,并通过fragmentsize和nomatchsize来控制和优化文档的展示效果。

首先,让我们来看看fragmentsize的使用。

fragmentsize表示每个文档中所呈现的片段的大小。

当用户查询一个词,系统会在文档中找到与之相关的文本片段,并将这些片段进行截取和呈现给用户。

fragmentsize的值决定了每个片段的大小。

如果fragmentsize的值较大,那么将显示更多的文本内容,用户可以更好地了解每个文档的主要部分。

然而,如果fragmentsize的值过大,可能会导致过长的文本片段,降低用户的浏览和阅读效率。

因此,根据实际情况,我们可以通过调整fragmentsize的值来平衡显示内容的详细程度和用户体验。

接下来,让我们来了解nomatchsize的使用。

nomatchsize表示在查询结果中,没有与用户查询词完全匹配的文档所显示的片段的大小。

在用户的查询结果中,可能会出现一些文档与查询词相关性较低,或者没有与查询词完全匹配的情况。

为了提供一些参考信息给用户,系统会展示一些与查询词相关性较低的文档片段。

nomatchsize的值决定了这些无匹配文档片段的大小。

如果nomatchsize的值较大,那么将显示更多的无匹配文本片段。

然而,如果nomatchsize的值过大,可能会降低用户对真正相关文档的注意力,给用户带来干扰。

因此,根据使用场景,我们可以通过调整nomatchsize的值来平衡展示无匹配文本的参考信息与用户的需求。

fragement详解

fragement详解

fragement详解Fragment详解Fragment是Android开发中的重要概念之一,它是一种可以嵌入到Activity中的可重用组件。

本文将详细解析Fragment的定义、使用方法以及常见应用场景。

一、Fragment的定义Fragment是Android中一种可重用的组件,它可以作为Activity界面的一部分进行使用。

与Activity一样,Fragment具有自己的生命周期和UI布局,可以接收用户输入事件。

二、Fragment的使用方法1. 创建Fragment:创建Fragment有两种方式:通过继承Fragment类创建和通过布局文件创建。

- 通过继承Fragment类创建:新建一个类,继承自Fragment类,并重写onCreateView()方法,在该方法中返回Fragment的布局。

- 通过布局文件创建:新建一个XML布局文件,定义Fragment的UI布局,然后在代码中通过LayoutInflater加载该布局。

2. 添加Fragment到Activity中:通过FragmentManager将Fragment添加到Activity中。

可以在Activity的XML布局中定义一个容器,通过FragmentTransaction将Fragment添加到该容器中。

3. Fragment的交互:Fragment可以通过getActivity()方法获取所在的Activity实例,并通过该实例进行数据交互。

也可以通过使用接口回调的方式,在Fragment和Activity之间进行交互。

4. Fragment回退栈:当多个Fragment同时存在时,可以将Fragment添加到回退栈中,通过按下返回键来回退到上一个Fragment。

可以使用addToBackStack()方法将Fragment添加到回退栈中。

三、Fragment的常见应用场景1. 多面板界面:通过将不同的Fragment添加到一个Activity中,可以实现多面板的界面效果。

fragment的创建方式

fragment的创建方式

fragment的创建方式
创建Fragment的方式主要有两种:静态添加和动态创建。

1. 静态添加:将Fragment当成一个控件一样使用,在开发过程中一般使用动态创建。

具体步骤如下:
在xml文件中创建Fragment。

创建一个类继承Fragment类(注意继承的是哪个包的Fragment要统一)并重写onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)方法,直接返回对应的布局文件。

在Fragment上添加其他元素控件等,所以再创建一个xml文件,该文件是显示在Fragment的布局。

在Fragment的xml文件中添加class属性:class=””表示关联Fragment。

2. 动态创建:在运行时动态添加Fragment,可以更灵活地控制Fragment 的显示和隐藏。

具体步骤如下:
创建一个Fragment实例。

使用FragmentTransaction将Fragment添加到Activity中。

提交事务,使Fragment的添加生效。

以上是创建Fragment的两种方式,可以根据实际需求选择适合的方式。

fragement添加构造方法

fragement添加构造方法

fragement添加构造方法摘要:1.介绍fragment 的概述2.为什么需要添加构造方法3.构造方法的实现方法4.总结正文:Fragment 是Android 开发中经常使用的一个类,它可以在Activity 中显示一个独立的界面。

Fragment 的使用可以提高应用的界面切换效果,同时也使得代码更加模块化。

在开发过程中,我们有时需要为Fragment 添加构造方法,以满足不同的需求。

为什么需要添加构造方法呢?主要有以下两个原因:1.代码重用:在某些情况下,Fragment 需要与其他组件(如View、ViewGroup 等)一起初始化。

通过为Fragment 添加构造方法,我们可以方便地将这些组件传递给Fragment,实现代码的复用。

2.初始化逻辑:有时我们需要在Fragment 的初始化过程中执行一些特定的逻辑。

通过为Fragment 添加构造方法,我们可以将初始化逻辑与构造方法关联起来,确保这些逻辑在Fragment 创建时被执行。

那么如何为Fragment 添加构造方法呢?以下是一个简单的示例:```javapublic class MyFragment extends Fragment {private View mView;// 添加一个构造方法,用于初始化Viewpublic MyFragment(View view) {super();mView = view;}@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {// 使用mView 进行一些操作return mView;}}```在这个示例中,我们为MyFragment 添加了一个构造方法,该构造方法接受一个View 参数。

在onCreateView 方法中,我们可以直接使用mView 进行一些操作,而不需要重新创建一个View。

fragment方法

fragment方法

fragment方法(最新版6篇)篇1 目录1.碎片(fragment)方法的定义与特点2.碎片方法的应用场景3.碎片方法的优点与局限性篇1正文在知识类写作中,碎片(fragment)方法是指将一个完整的文章或文本拆分成若干个相对独立的部分进行创作和组织。

这种方法可以帮助作者更好地把握文章结构,提高写作效率,同时使文章内容更具针对性和可读性。

碎片方法的应用场景非常广泛,例如在编写长篇小说、研究报告或知识类文章时,作者可以通过碎片方法将内容拆分为若干个章节或主题,分别进行创作和整理。

这样可以让作者更清晰地了解每个部分的内容和结构,使得文章在整体上更加有条理和连贯。

碎片方法的优点主要体现在以下几点:1.有利于提高写作效率。

通过将完整的文章拆分成若干个部分进行创作,作者可以集中精力完成每个部分的内容,从而提高写作速度。

2.有利于保持文章结构的清晰。

碎片方法使得作者可以清晰地了解文章的每个部分,从而更好地把握整体结构,避免文章内容混乱。

3.有利于提高文章的可读性。

碎片方法使得文章的每个部分都具有相对的独立性,读者可以根据兴趣和需求选择阅读,提高阅读体验。

然而,碎片方法也存在一定的局限性。

首先,由于文章被拆分成若干个部分进行创作,可能会导致部分内容在整体上的连贯性较差,需要作者在后期进行修订和整合。

其次,碎片方法对于作者的组织能力和逻辑思维要求较高,如果不能很好地把握每个部分的关系和结构,可能会导致文章整体效果不佳。

总之,碎片方法是一种在知识类写作中非常有用的技巧,通过将完整的文章拆分成若干个部分进行创作和组织,可以提高写作效率,保持文章结构的清晰,提高文章的可读性。

篇2 目录1.介绍 fragment 方法2.fragment 方法的用途3.fragment 方法的实现原理4.使用 fragment 方法的注意事项5.结论篇2正文1.介绍 fragment 方法Fragment 方法是 Java 编程语言中用于创建和操作片段(Fragment)的一种方法。

xmlagg函数用法

xmlagg函数用法

xmlagg函数用法XMLAGG函数是Oracle数据库提供的一种聚合函数,用于将多个行的值合并为一个XML值,并将结果作为单一的行返回。

XMLAGG函数提供了方便的方式来将多行数据转换为XML格式,方便数据处理和传输。

XMLAGG函数的基本语法如下:XMLAGG(XML_Element)ORDER BY column_name其中,XML_Element是要聚合的列或表达式,可以是任何数据类型的值。

ORDER BY子句是可选的,用于指定XML元素的排序方式。

XMLAGG函数的工作原理如下:1.根据指定的列或表达式,将每一行的值转换为XML元素。

2.通过XMLAGG函数,将多个XML元素聚合为一个XML序列。

3.将XML序列作为单一的行返回,通常存储在一个XML类型的列中。

例如,假设有一个名为"Products"的表,包含产品的信息,包括"ProductID"、"ProductName"和"Category"等列。

可以使用XMLAGG函数将这些数据转换为一个XML序列,并存储在一个XML类型的列中,如下所示:SELECTXMLAGG(XMLELEMENT("Product",XMLELEMENT("ProductID", ProductID),XMLELEMENT("ProductName", ProductName),XMLELEMENT("Category", Category)))FROMProducts;通过以上的查询语句,可以将"Products"表中的所有产品信息聚合为一个XML序列,该序列包含多个"Product"元素,每个元素都包含"ProductID"、"ProductName"和"Category"子元素。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Fragmenting XML Documentsvia Structural ConstraintsAngela Bonifati1,Alfredo Cuzzocrea2,and Bruno Zinno11Icar-CNR,Via P.Bucci41/C,87036Rende,Italy{bonifati,zinno}@r.it2DEIS,University of Calabria,Via P.Bucci41/C,87036Rende,Italycuzzocrea@si.deis.unical.itAbstract.XML query processors suffer from main-memory limitations that pre-vent them from processing large XML documents.While content-based predi-cates can be used to project down parts of the documents,it may still be neededto resize the obtained projections according to structural constraints.In this pa-per,we consider size,tree-width and tree-depth constraints to enable a structure-driven fragmentation of XML documents.Although a set of heuristics performing this kind of fragmentation can be easilydevised,a key problem is determining the values of structural constraints inputto the above heuristics,given that the search space is prohibitive at large.To alle-viate the problem,we introduce special-purpose structure histograms that reportthe constraint values for the fragments of a given document.We then present aprediction algorithm that probes those histograms to output the expected numberof fragments,whenfixed input values of the constraints are used.Furthermore,we study how to relax thefixed constraints by means of classical distributions.An experimental evaluation of our study shows the effectiveness of our fragmen-tation methodology on some representative XML datasets.1IntroductionAn imminent development of XML processing is undoubtly making it as fast and effi-cient as possible.Query engines for XML are being designed and implemented,with the specific goal of employing indexes to improve their performance[10].Others[23] employ statistics to cost the most frequently asked queries,or use classical algebraic techniques[16]to optimize query plans.An XML query engine which is parsimonious in resources,may still enable a further resizing of the obtained query results.This may also happen in many resource-critical contexts,such as a distributed database,or a stream processor.We propose a suitable fragmentation of XML input trees and tree results,that applies the well-known‘divide and conquer’principle.The advantages of XML fragmentation are already being proved in an XML query engine[4,5]or in a distributed setting[3].Fragmentation of XML documents as proposed by the previous works has been based on semantics,whereas in this paper we work out a novel kind of fragmentation,which is orthogonal to thefirst and is only guided by the structural properties of an XML document.The problem:building constraint-driven fragments.Given an XML document,mod-eled w.l.g.as a tree,there exist several ways of splitting it into subtrees,which may be semantically driven or structurally ually,query processors decides to ap-ply projections and selections beforehand in order to reduce the amount of data to be manipulated in memory during query evaluation.Notwithstanding the effectiveness of pushing algebraic operators within the query plan,it may happen that the size of inter-mediate results are still too large tofit in memory.If for instance we consider a100MB XMark document,and a query Q1asking for open auctions sold by people owning a credit card(creditcard being an optional element)and for closed auctions sold by any people,the result query plan would look like the one shown in Fig.1(a).The two branches of the join operator(s)would in such a case be of size29.6MB(6.1MB)and 17.09MB(11.8MB),respectively.Along with the size,the intermediate results can be also resized w.r.t.tree-width and tree-depth constraints that may affect the query pro-cessing time as well.These can be prohibitively large for the join branches above,i.e. 70(38)and9(2)respectively for the left-hand-side join operator.If structure-driven fragmentation is employed,the subtrees output by the selections and projections can be resized to smaller pieces according to the structural constraints and can be then processed per piece.Fig.1(b)pictures the result of fragmentation on the two operands of the join(s).A suitable application of structure-driven fragmentation is streaming XML process-ing(e.g.[8]).Stream query processors are mainly memory-based,thus motivating the use of smaller fragments given for instance by top-down navigation of the original doc-ument.Our fragmentation could be employed to obtain smaller XML messages input to the stream(see Fig.1(c)),carefully designed to not exceed specified memory require-ments at query runtime.Thus,using the three structural constraints altogether allows us to obtain approximately uniform fragments,e.g.to be used in a uniform stream.Finally,distributed and parallel query processing may leverage the fragmentation of the original documents,in order to improve their performance.This issue will be further discussed in our experimental study on XP2P[3],a P2P-based infrastructure we have developed.Coming back to our problem,we can state it as follows.Let t be an XML tree,w a tree-width constraint,d a tree-depth constraint and s a tree-size constraint,we split t into valid fragments f of t such that size(f)<=s,tw(f)<=w and td(f)<=d and ∃f such that f∩f =∅,size,tw and td being functions returning the size of f,the maximum width of f,and the maximum depth of f,and f being a valid fragment of t, respectively.The proposal.The above constraints may turn to be incompatible if randomly specified, thus possibly leading to empty solutions.We have devised SimpleX,a set of heuristics performing the above fragmentation.Being the search space prohibitively large,a key problem is determining the values of structural constraints input to the above heuristics. To alleviate the problem,we have designed a set of summary data structures,namely the structure histograms,which let determine correct combinations of the constraint values,without actually doing the fragmentation beforehand.The histograms have been implemented within an analysis module that uses algorithms to predict an interval for the number of fragments produced by the heuristics.This is particularly interesting forMergeUnion U MSJ [/seller/@personref=@id]MSJ[/seller/@personref=@id](max 500KB)(max 250KB)(max 1MB)Data Stream MergeUnionUMSJ[/seller/@personref=@id]MSJ [/seller/@personref=@id]//open_auction //people/person[creditcard]//open_auction//people/person[creditcard](29.6MB)(6.1MB)(11.8 MB)//people/person //closed_auction (17.09MB)(max 400KB)//closed_auction (70)(9)(38)(2)(9)(22)(39)(2)(max 10)(max 5)(max 10)(max 2)(max 10)(max 5)(max 10)(max 2)(a)(b)(c)Fig.1.Query plan of query Q 1(a),with the fragmentation operator applied (b),and example of use of fragmentation for XML data streams (c).Node1452015Node1005010Node453020Table1.Sizes of subtrees of Fig.2.large XML datasets and query results,as it offers a visual summarization tool that can be inspected at any time for prediction.Moreover,we study how to relax thefixed constraints by means of classical distri-butions.Finally,we have probed the effectiveness of our set of heuristics and structure his-tograms on a set of significant XML datasets.The rest of the paper is organized as follows:Section2shows the heuristics for structure-driven fragmentation;Section3describes the structure histograms and their use in our analysis module;Section4presents a variety of experiments that probe the effectiveness of our techniques;Section5discusses the related work.2SimpleX:simple top-down heuristics for shredding an XML documentThe fragmentation problem stated above is a problem with linear cost function and in-teger constraints,which is intrinsically exponential.To effectively explore the search space,we have designed a set of simple top-down heuristics for document fragmenta-tion.They all have in common the fact that they start at the root of the document and proceed in a top-down fashion.At each step the current subtree width,depth and size are checked against the constraints w,d,s.If the constraints are satisfied,the subtree becomes a valid fragment and is pruned from the document to constitute a separate valid XML document.A new node containing as PC-data the path expression of the ob-tained fragment will then replace the given subtree in the original document.If instead the constraints are not satisfied,the algorithm inspects the next subtree in the XML tree according to the criteria assessed by the heuristic.Afirst criterion to select the next subtree is for instance given by the order of visit, i.e.depth-first or breadth-first.We call these variants in-depth and in-width.Fig.2rep-resents an XML tree compliant to the XMark DTD,whose subtree sizes3are reported in Table1as absolute numbers(dots in Fig.2represent PC-data elements whose sizes appear in Table1).Applying for instance the in-depth heuristics with constrained size s=100and depth d=1and unconstrained width w,the XML tree gets fragmented as in Fig.2(a), whereas with s=100,d=1and w=1,it gets fragmented as shown in Fig.2(b).The application of the other heuristics on the sample tree is omitted for conciseness.(a)(b)Fig.2.A sample XMark tree fragmented with one of the SimpleX heuristics and two(three) constraints in(a)(in(b)).SimpleX4is one possible set of simple heuristics among the various ones that can be applied for shredding a document(e.g.bottom-up or random-access).In principle, there is no better heuristics than any other,as it actually depends on the structure of the document.Our aim in this paper is notfinding the best heuristic,but instead to show how to tune the fragmentation constraints for SimpleX heuristics,if summary data structures are employed.To that purpose,we employ ad-hoc summary structures, namely the structure histograms,that let estimate the number of fragments satisfying the values of constraints.We introduce the structure histograms next.3Structure histogramsGiven an XML document X,the structure histograms present X as summarized by counting the fragments(i.e.,the sub-trees)in X that hold the following structural prop-erties:(i)the fragment size s,(ii)the fragment tree-depth d,and(iii)the fragment tree-width w.Formally,let X be an XML document,let p be a structural property defined on X, let D p=[p min,p max]be the value domain of p,a class∆p is defined on D p as follows:∆p=[p min,p max],such that p min≤p min≤p max≤p max.Then,a structure histogram built on X,denoted by H S(X,p,∆p),grouping p by an aggregation function f=COUNT(thus,reporting the frequency of the fragments)over∆p-wise steps,is a tuple D p,H p ,such that each bucket b(∆p)in the co-domain H p counts the fragments in X having a value of the(structural)property p ranging∆p=[p min,p max].We call H S a one-dimensional histogram computed over p.Moreover,to support parametric summarization of XML data and thus improve the fragmentation prediction,we introduce an extension of the previous histograms, called parametric structure histograms,denoted by H P S(X,p,∆p),such that P is a fixed structural property w.r.t.which the histogram over p is computed.We call H P S a two-dimensional histogram computed over P,p .More precisely,in our fragmentation framework,we need to introduce the following structure histograms summarizing X:H D D126H SS1111...H WW126Table2.H D,H S(partial)and H W for the sample XMark tree of Fig.2.-the Tree-Size Structure Histogram H S(X,s,∆s),which summarizes X w.r.t.the size s(i.e.,p=s);-the Tree-Depth Structure Histogram H D(X,d,∆d),which summarizes X w.r.t.the tree-depth d(i.e.,p=d);-the Tree-Width Structure Histogram H W(X,w,∆w),which summarizes X w.r.t.the tree-width w(i.e.,p=w);-the Max-Tree-Size Parametric Structure Histogram H S D(X,s,∆d),which,fixed the size s by computing the max value(i.e.,P=s),summarizes X w.r.t.the tree-depth d(i.e.,p=d);In particular,given an input XML document X,and a structural property p,we build the output structure histogram H S(X,p,∆p)by setting the input parameters D p and ∆p as follows(it should be noted that the input parameter p is directly set by the target user/application):(i)D p=[0,MaxV alue],such that MaxV alue is the maximum value of the structural property p among all the fragments in X,(ii)∆p=N·|D p|, such that0≤N≤1is a parameter empirically set,and|D p|is the cardinality of D p. Examples of such structure histograms for the subtree in Fig.2are shown in Table2.Note that building the histograms for an arbitrary XML tree is necessarily exponen-tial in the worst case,but our heuristics can significantly trim the number of inspected fragments.A user(or application)willing to partition a document who knows how many frag-ments she wants to obtain,may want to know the values of constraints that let exactly obtain that number of fragments.In other words,she would like to properly tune the constraints values.Moreover,constraints as specified by the user may not be compati-ble among each other or thefinal results may be biased to the dataset inherent structure. In order to automatize the task of deciding the constraint values,we have devised an algorithm that predicts the range of frequencies by inspecting the structure histograms. The algorithm pseudocode is shown in Fig.3.For space reasons,we limit ourselves to discuss the algorithm on the XMark sample of Fig.2and show that it lets predict the range of frequencies quite sharply.Earlier,we have pointed out that if we disregard the width w in(a),we obtain a rather different fragmentation w.r.t.(b),where w has a non-null value.We start by looking at the histogram H D reported in Table2and we remark that for a value of depth d=1,we would obtain two fragments.If we look at the histogram H W,this in turn tells that there are two nodes with width w=3,and these nodes cannot be part of the same fragment if w is chosen to be1.In such a case wewould generate6fragments out of those nodes.Thus,only by looking at H D and H W, we learn that the number of fragments shall be in the range[2,6].If we further add the third constraint s,the upper bound of the above range may raise or not,depending on whether the fragments so far obtained satisfy or not the value of s.This leads to choose a value of s from Histogram H S,that pessimistically corresponds to the size of the largest subtree located at depth d=1(e.g.subtrees rooted in nodes people andcatgraph in Fig.2),information that we learn from an H SD histogram.In this par-ticular example,we can choose for instance a size s equal to100,thus obtaining the fragmentation shown in Fig.2(b)quite straightforwardly.H S:tree-size structure histogram,s0,d0,w0:size,depth,width constraints):return[f min,f max] 1such that H D(d0,∆d0,f0)3Let f min=f0,f max=sum(f0,w max−w0)5Let f smaxthe corresponding frequency in H S7return[f min,f max]9f max+=f smax11f max+=f wi∗(w i−w0)13return[f min,f max]Fig.3.Algorithm for predicting the range of frequencies using the structure histograms.3.1Relaxing constraints with distributions.As we have seen,choosing correct values for the input constraints of the fragmentation algorithm is a non trivial task.An incorrect value for such constraints would lead to too many fragments or too few of them,or even to an empty solution in some cases.Indeed, there may exist random values of w,d and s,which turn out to be incompatible among each other.Figure4shows the search space for the NASA dataset.In order to alleviate this problem,we let the constraints vary along classical dis-tributions(such as Uniform,Gauss,Zipf).Thus,along with choosingfixed bounds for s,w,d,we assign ranges to them according to those distributions.This is further moti-vated by the fact that an XML document contains’unbreakable‘pieces of text(such as PC-data,entities etc.)that needs to be taken into account in the choice of the constraint values(especially for the size constraint).By empirically comparing the output of Sim-0 1 2 3 4 5 6 7 0 50100150200350k -300k -250k -200k -100k -50k -S i z e D e p thW i d t h Fig.4.The three-dimensional search space for the Nasa dataset.Document d (MB)maxDepth provenance XMARK (113)11[20]XMARK (30)11[20]NASA (24)7[19]FourReligiousWorks-Bom (1.5)5[9]DescriptionFOR $p IN XPathExpr RETURN $pTable 3.XML documents and queries used.pleX against the baseline case given by a constant distribution,we will show below that non-constant distributions have in general a better behavior.4Experimental assessmentWe have conducted an experimental study aimed at showing the effectiveness of our structure-driven fragmentation methodology.The experiments are divided into three classes.First,we build the structure histograms for representative XML datasets,and show their use to decide the final values of constraints.Secondly,we define and measure the accuracy error of fragmentation using the SimpleX set of heuristics,when fixed constraints are employed against the cases (baseline)in which the constraints vary with classical distributions (e.g.Uniform,Gauss,Zipf).Finally,we demonstrate the utility of fragmentation in a distributed setting,such as a DHT-based P2P network.In such a case,we measure the impact of fragmentation on network performance against the expected ideal behavior.All the experiments have been performed on a machine with a 1.2GHz processor,512MB RAM,and running Linux Suse 9.1.We uniquely identify each fragment with its absolute root-to-leaf path expression.Each fragment stores with extra sub nodes the path expression of subfragments and separately the path expression of its parent fragment.We have presented this data model in [3].Notice that any data model (such as [5]for instance)other than ours can be adopted here to represent the fragments.Finally,the datasets and queries employed in the study are summarized in Table 3.[s1−s2](KB)20861w1111d4567DistributionAvg.#nodes e d 18790.970.97Uniform78130.57570.090.88Zipf 67130.57Table 5.Application of SimpleX to NASA with/without distribution.SimpleX heuristics at work.We have put at work the proposed heuristics on the datasets of Table 3.We have considered various values of parameters s ,w and d and run the heuristics with fixed values of these parameters and with their variations as given by classical distributions (e.g.Uniform,Gauss,Zipf).We define the accuracy error e c of fragmentation w.r.t.constraint c as follows.Let c a be the average value of the size (tree-depth and tree-width,resp.)obtained with SimpleX heuristics,c 0the fixed value of constraint input to Algorithm 3,c min and c max the interval of the constraint value as obtained via the particular distribution,then the accuracy error of fragmentation is given by the formula |c 0−c a |2−c a |2|for non-fixed constraints.As an example,Table 5shows the obtained results with the NASA dataset and value of constraints:s =230KB,w =1200and d =5.The lower is the accuracy error,the better is the matching of the heuristics with the fragmentation constraints.It can be noticed that the case when the constraints are strict upper bounds leads to fairly more fragments than the cases when distributions are applied.On average,fragmentation via distributions obtains lower accuracy errors than the case when distri-butions are not used.Results with other datasets and other values of constraints showed the same trend.Scattering XML fragments in DHT-based P2P networks.As we already discussed,there exist several applications of our fragmentation strategy,which justify its effective-ness.In this section,we present some experiments that have been performed on XP2P ,our DHT-based P2P simulator [3].For each experiment,we have scattered a certain number of fragments in the net-work obtained with our structure-driven fragmentation.We then measured the network scalability when both varying the number of peers and the number of queries.Fig.6(a)shows the nr.of hops versus the number of peers when XMark30has been divided into 1000fragments with the constraint values predicted by our analysis tool.Here we have considered exactly as many queries of kind QD i (see Table 3)as the number of fragments,each query being propagated to the successor peers as dictated by the current peer list of successors (i.e.at logarithmic distance).It can noticed that the case where XML structure-driven fragmentation is used closely tracks the original Chord 5logarithmic curve.Finally,Fig.6(b)shows the nr.of hops when varying the nr.of fragments for XMark30dataset within a network of 500peers.The fragmenta-Fig.6.Nr.of hops w.r.t.nr.of peers with1000fragments(a);Nr.of hops w.r.t.nr.of fragments with500peers(b).In both cases,the number of queries of kind QD i equals the number of fragments.tion slightly increases the number of hops,if compared with the constant curve that represents no fragmentation.5Related workThe advantages of fragmenting relational databases are well established[17]as both horizontal fragmentation[7],which splits a given relation into disjoint sub-relations, and vertical fragmentation[13],which projects a given relation onto a subset of its at-tributes.More recently,fragmentation techniques have been adapted to object-oriented[1], semi-structured[14],and native XML[4]databases.[15]proposes an innovative approach for supporting the distribution of XML databases via horizontal fragmentation.It employs a query-oriented cost model taking into ac-count the most frequently asked queries,and uses heuristics to optimize the fragmenta-tion based on the efficiency of such queries.Being query-driven,this approach does not consider the structural properties of XML data,as we do in our proposal.XFrag[4]is a framework for processing XQuery-formatted queries on XML frag-ments in order to reduce memory processing.This work focuses on how to employ fragments to make query optimizations,thus strengthening our proposal.Several query optimization techniques have been presented for XML data,among which[16]and[11]. While the former relies on algebraic projections,the latter is based on tree-automata. These techniques can be combined with ours to let the processor evaluate queries in parallel on multiple fragments.[6]and[18]propose summary data structures for XML twigs and paths that let de-rive an estimation of queries selectivity by using statistical methods,such as histograms or wavelets.Notwithstanding the importance of the above data structures for query op-timization,our histograms are instead aimed at predicting the number of fragments of an XML document when applying SimpleX heuristics.The latter prediction could not be inferred by looking at the above data structures.[22]proposes the position histograms,which allow the estimation of both simple and complex pattern query answers.Furthermore,when XML schema information is available,they employ the so-called coverage histograms that extend the former and allow the target XML database to be better summarized.Differently from ours,those histograms help estimating the sizes of child and descendant steps in path expressions. Histograms are used for a rather different purpose in our framework,as stated above.Finally,XRel[21]is a path-based approach to store XML documents into RDBMS and retrieve them afterwards.While the path identification of fragments is similar to ours,the focus of the paper is on building an extension of relational databases for XML data.6ConclusionsWe have presented a fragmentation strategy for XML documents that is driven by struc-tural constraints.To the best of our knowledge,this is thefirst work addressing such a problem.We further offer the user or the application a prediction of the‘outcome’of the fragmentation,by means of the so-called structure histograms.By means of dis-tributions,we are able to vary the constraint values thus improving the fragmentation performance.We are currently developing new heuristics that use additional data struc-tures,which could be used in combination with histograms to make the prediction more precise.Moreover,we plan to embed our fragmentation tool and its analysis module in an existing XQuery engine.References1.Bellatreche,L.,Karlapalem,K.,Simonet,A.:Algorithms and Support for Horizontal ClassPartitioning in Object-Oriented Databases.Distributed and Parallel Databases8(2000)2.Bohannon,P.,Freire,J.,Roy,P.,Simeon,J.:From XML Schema to Relations:A Cost-basedApproach to XML Storage.In:Proc.of ICDE.(2002)3.Bonifati,A.,Matrangolo,U.,Cuzzocrea,A.,Jain,M.:XPath Lookup Queries in P2P Net-works.In:Proc.of WIDM.(2004)4.Bose,S.,Fegaras,L.:XFrag:A Query Processing Framework for Fragmented XML Data.In:Proc.of WebDB.(2005)5.Bremer,J.M.,Gertz,M.:On distributing xml repositories.In:Proc.of WebDB.(2003)6.Chen,Z.,Jagadish,H.V.,Korn,F.,Koudas,N.,Muthukrishnan,S.,Ng,Raymond T.,Srivas-tava,D.Counting Twig Matches in a Tree.In:Proc.of ICDE.(2001)7.Ezeife,C.,Barker,K.:A Comprehensive Approach to Horizontal Class Fragmentation in aDistributed Object based System.Distributed and Parallel Databases3(1995)8.Florescu,D.,Hillery,C.,D.,Kossman,et al.The BEA/XQRL Streaming XQuery ProcessorIn:Proc.of VLDB.(2003) web site.Available at /xml/books/biblegold/examples/baseball/(2004)10.Jagadish,H.V.,Al-Khalifa,S.,Chapman,A.,Lakshmanan,L.V.,Nierman,A.,Paparizos,S.,Patel,J.,Srivastava,D.,Wiwatwattana,N.,Wu,Y.,,Yu.,C.:Timber:a Native XML Database.VLDB Journal11(2002)11.Koch,C.:Efficient Processing of Expressive Node-Selecting Queries on XML Data in Sec-ondary Storage:A Tree Automata-based Approach.In:Proc.of VLDB.(2003)12.Krishnamurthy,R.,Chakaravarthy,V.T.,Naughton,J.F.:On the Difficulty of Finding Opti-mal Relational Decompositions for XML Workloads:A Complexity Theoretic Perspective.In:Proc.of ICDT.(2003)13.Lin,X.,Orlowska,M.,Zhang,Y.:A Graph-based Cluster Approach for Vertical Partitioningin Databases Systems.Data and Knowledge Engineeering11(1993)14.Ma,H.,Schewe,K.D.:Fragmentation of XML Documents.In:Proc.of SBBD.(2003)15.Ma,H.,Schewe,K.D.:Heuristic Horizontal XML Fragmentation.In:Proc.of CAiSE.(2005)16.Marian,A.,Simeon,J.:Projecting XML Documents.In:Proc.of VLDB.(2003)17.Ozsu,M.,Valduriez,P.:Principles of Distributed Database Systems.Alan Apt(1999)18.Polyzotis,N.,Garofalakis,M.N.:Statistical synopses for graph-structured XML databasesIn:Proc.of SIGMOD2002.19.University of Washington’s XML repository.Available at/research/xml/datasets(2004)20.Xmark:An XML Benchmark Project.Available at http://monetdb.cwi.nl/xml/(2002)21.Yoshikawa,M.,Amagasa,T.,Shimura,T.,,Uemura,S.:XRel:A Path-based Approach toStorage and Retrieval of XML Documents Using Relational Databases.ACM Transactions on Internet Technology1(2001)22.Wu,Y.,Patel,J.,Jagadish,H.:Using Histograms to Estimate Answer Sizes for XML Queries.Information Systems28(2003)23.Zhang,N.,Haas,P.,Josifovski,V.,Lohman,G.,Zhang,C.:Statistical Learning Techniquesfor Costing XML Queries.In:Proc.of VLDB.(2005)。

相关文档
最新文档